我从javascript开始,我觉得我没有太多的词汇来解释我的问题。我试图用d3构建一个图表,这是我需要的数据:
data=[
{x: 'A', y: 10},
{x: 'B', y: 5},
{x: 'C', y: 15}
]/>
但是现在这里是[['A',10],['B',5],['C',15]]
那么......我如何合并我的数据以及如何添加" x"和" y"类别名称。
答案 0 :(得分:6)
以下是一些将其中一个转换为另一个的ES6代码:
var data = [['A',10],['B',5],['C',15]];
var result = data.map( ([x, y]) => ({ x, y }) );
console.log(result);

data.map()
:map
方法将遍历data
的每个元素(有3个元素),并调用您提供的函数作为参数。因此,该函数将被调用三次,并且每次将它作为参数传递给当前元素。
(...) => ....
这是ES6箭头语法。它代表一个功能,但有一些不同的规则。这些差异在这个答案中没有关系,所以我不会进入那个。
[x, y]
:这是map
给出的参数:它是数组元素之一。通常你在这里只有一个变量(或几个用逗号分隔),但是在这里我们使用"解构赋值":我们希望参数是一个数组,并希望将它的元素分配给变量{{ 1}}和x
。因此,第一次y
的值为x
,而"A"
将为y
,等等。
10
:箭头功能的箭头。以下是函数返回的表达式。
=>
:括号只是为了避免与语句块混淆,语句块也以括号开头。 ({ x, y })
是要返回的对象。这里我们再次使用ES6语法,实际上将其解释为{ x, y }
;它是一种快捷符号。
因此{ "x": x, "y": y }
方法将调用该函数三次,并且每次返回一个对象。 map
会将这些放入一个新数组中,然后返回该数组。
以下是ES5语法中的类似代码:
map

答案 1 :(得分:0)
Pure ES3 +解决方案?没有经过测试,但我相信它有效。
var arr = [['A',10],['B',5],['C',15]],
data = [];
for (a = 0; a < arr.length; a++) {
var obj = {};
obj.x = arr[a][0];
obj.y = arr[a][1];
data[a] = obj;
}
console.log(data);
&#13;
答案 2 :(得分:-1)
如果您使用名为Lodash的库 - https://lodash.com/docs/4.15.0#map
_.map([['A',10]['B',5]['C',15]], function(o) { return {x:o[0], y:o[1]}; });
修改强>
如果您不在项目中使用Lodash,那可能有点矫枉过正