如果我有这样的数据...
var dataset = [
{ 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 }
];
我如何使用.map()方法重新排列数据,使其成为一个数组数组,每个数组代表一个类别(苹果,橙子,葡萄),并且该数组中的每个对象都是数据。 x是ID标记。
var dataset = [
[
{ 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 },
{ x: 2, y: 19 },
{ x: 3, y: 23 },
{ x: 4, y: 17 }
],
[
{ x: 0, y: 22 },
{ x: 1, y: 28 },
{ x: 2, y: 32 },
{ x: 3, y: 35 },
{ x: 4, y: 43 }
]
];
最佳答案
一种方法是针对每个键(水果),使用map
创建该水果的所有对象:
newDataset = ["apples", "oranges", "grapes"].map(function(n){
return dataset.map(function(d, i){
return { x: i, y: d[n] };
});
});
请注意,传递给
i
的匿名函数中的map
是dataset
数组的索引,因此可以用作ID。