我对JavaScript很陌生,现在我正在学习不同的教程。为了可视化d3js图,我喜欢重构一个小数据集,以便d3.layout.stack()
函数可以处理数据。 原始数据集如下所示。它的一系列对象:JavaScript从其他嵌套对象填充嵌套对象
var dats = [{ apples: 5, oranges: 10, grapes: 22 },
{ apples: 4, oranges: 12, grapes: 28 },
{ apples: 2, oranges: 19, grapes: 32 },
{ apples: 7, oranges: 23, grapes: 35 },
{ apples: 23, oranges: 17, grapes: 43 }
];
目标对象应如下所示。
var finaldats = [
[{ x: 0, y: 5 },
{ x: 1, y: 4 },
{ x: 2, y: 2 },
{ x: 3, y: 7 },
{ x: 4, y: 23 }
],
[{ x: 0, y: 10 },
{ x: 1, y: 12 },
...
我的方法迄今:
var inner = {}
inner["x"] ;
inner["y"] ;
dats.forEach(function(d,i) {
inner["x"] = i
inner["y"] = dats[i].apples;
});
这产生:它的对象的数组的数组Object {x: 4, y: 23}
它总是输入数组,这是很好的,因为对象是最后一个元素在每次迭代中不断重写。 目前我无法推送这些对象,在每次迭代中创建到一个数组中。
我想到了这样的事情,但它不工作:
var inner = {}
inner["x"] ;
inner["y"] ;
var outer = [];
dats.forEach(function(d,i) {
inner["x"] = i
inner["y"] = dats[i].apples;
outer.push(inner);
});
这是一个完整的答案。我打算写些类似的东西,直到我刷新页面。 – DonovanM
非常感谢您的支持。我对Ruby有一些经验,但JavaScript在这里和那里有点不同。 – verticoe