Javascript 为什么使用键过滤器而不是columns.slice()?

Javascript 为什么使用键过滤器而不是columns.slice()?,javascript,d3.js,Javascript,D3.js,作者为什么使用 d3.keys(cars[0]).filter... 而不是使用 cars.columns.slice(1) 。。?切片有效地返回相同的信息,而无需执行以下任何逻辑 var x = d3.scale.ordinal().rangePoints([0, width], 1), y = {}; // Extract the list of dimensions and create a scale for each. x.domain(dimensions =

作者为什么使用

d3.keys(cars[0]).filter...
而不是使用

cars.columns.slice(1)
。。?切片有效地返回相同的信息,而无需执行以下任何逻辑

  var x = d3.scale.ordinal().rangePoints([0, width], 1),
   y = {};

  // Extract the list of dimensions and create a scale for each.
  x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
    return d != "name" && (y[d] = d3.scale.linear()
        .domain(d3.extent(cars, function(p) { return +p[d]; }))
        .range([height, 0]));
  }));
这方面的数据如下:

name,economy (mpg),cylinders,displacement (cc),power (hp),weight (lb),0-60 mph (s),year
AMC Ambassador Brougham,13,8,360,175,3821,11,73
AMC Ambassador DPL,15,8,390,190,3850,8.5,70
AMC Ambassador SST,17,8,304,150,3672,11.5,72

来源:

该代码的作者是D3的创建者。当然,他可能更喜欢第二段。但是,该代码使用的是D3V3.x,并且在该版本的D3中,数据数组中没有
属性

让我们在下面的片段中看到这一点

首先,使用D3V3.x:

var data=d3.csv.parse(d3.select(“#csv”).text());
log(“使用d3.keys:+d3.keys(数据[0]));
log(“使用data.columns:+data.columns”)
pre{
显示:无;
}

名称、经济性(mpg)、气缸、排量(cc)、功率(hp)、重量(lb)、0-60英里/小时(s)、年份
AMC大使Brougham,1383601753821,11,73
AMC大使DPL,15,83901903850,8.5,70
AMC大使SST,17,83041503672,11.5,72