使用d3.js从数字数组创建数据集

时间:2015-07-18 17:54:36

标签: javascript arrays d3.js

我有一个简单的数组,其中包含每种类别的东西。简化版本:

var quantities = [{"type": "apple","number": 51}, 
{"type": "orange","number": 19}, 
{"type": "lemon","number": 11}];

根据这些数据,我将为每件事画一个圆圈,即51个​​圆圈,类型=苹果,19个为橙色,11个为柠檬。我想基于这些数据创建一个数组,每个对象有一个条目 -

dataset = [{apple},{apple},{apple}...]

在d3中创建此数据集的最佳方法是什么?我一直在尝试数据地图功能,没有运气。或者有没有更好的方法来绘制基于我的原始数组的每个类别的正确数量,没有数据集步骤? 谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用一些地图并缩小以将其转换为一行:

var quantities = [{"type": "apple","number": 51}, 
{"type": "orange","number": 19}, 
{"type": "lemon","number": 11}];

var joined = quantities.map(function(x) {
  return Array.apply(null, new Array(x.number)).map(function (y) {
    return x.type; }); }).reduce(function(prev, z) {
      return prev.concat(z); }, []) 

console.log(joined);

如果您想知道什么是Array.apply(null, new Array(x.number)) ...这是从指定长度的未初始化数组创建初始化数组的习惯用法,因为前者是 mappable 和后者不是。