将Javascript子数组减少为单个数组

时间:2016-06-07 15:34:14

标签: javascript arrays csv d3.js

我有以下代码的结果

 d3.csv("../hello.csv", function(data) {
    console.log(data);
    var usable = data.map(function (d) {
        return {    
            description: d.description.split(" ")
        };
    });
    console.log(usable);
});

当我展开它时,可用的控制台日志是[object, object, object]

0:Object
  description: Array[3]
    0 : "A"
    1 : "B"
    2 : "C"

1:Object
  description: Array[3]
    0 : "D"
    1 : "E"
    2 : "FG"

2:Object
  description: Array[5]
    0 : "AD"
    1 : "BD"
    2 : "DC"
    4 : "HH"

我需要的是单个数组,如下所示:

[A,B,C,D,E,FG,AD,BD,DC,HH]

将所有元素简化为单个数组而不是多个。

我怎样才能做到这一点?任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

您可以使用D3.merge()展平数组。假设这些是你的对象:

var obj1 = {description: [1,2,3]}
var obj2 = {description: [10,20,30,40]};
var obj3 = {description: [100,200,300,400,500]};

var array = [obj1, obj2, obj3]; // your array

所以这会产生你描述的输出:

console.log("array", array);

您可以使用d3.merge(array)将多个数组合并为一个:

var flattened = d3.merge([obj1.description, obj2.description, obj3.description]);
console.log("flattened", flattened);

它将打印:

flattened [1, 2, 3, 10, 20, 30, 40, 100, 200, 300, 400, 500]

请参阅:JSFiddle

答案 1 :(得分:1)

为什么不:

  -------------------
    X_ID  |  Y_ID
  -------------------
      2   |   8
      2   |   12
  --------------------