从内部具有对象的数组创建单个数组

时间:2018-11-02 12:46:41

标签: javascript

我有一个看起来像这样的数据

console.log(this.x)  //[Array(963), Array(964), Array(954)]
console.log(typeof this.x[0]) //object

现在,我想将对象中的所有这3个数组合并为一个数组。

[问题:] 我该怎么做?

旁注console.log(this.x)也可以包含5或6个数组。

[更新:] 我只想要值对,而不想要数组中的键。

这是打开数组时数据的外观

console.log(this.x[0]) //

 Array(963)
  >[0 … 99]

0: 23244
1: 2324610.25
2: 2035083.25
3: 1807027.25
4: 1931790
5: 1507934.25
6: 1547601
7: 1443744.5
8: 1417907.5
9: 1124118
10: 1110016.625

对于console.log(this.x[1])

1: Array(964)
>[0 … 99]
0: 45877.59766
1: 0
2: 0
3: 50099.19141
4: 0
5: 0

我希望它是仅具有值的单个数组 像这样说

[23244, 2324610.25, 2035083.25 ... , 1124118, 1110016.625, 45877.59766, 0, 0, 50099.19141, 0, 0]

4 个答案:

答案 0 :(得分:4)

您可以使用Array.prototype.flat()

  

flat()方法将创建一个新数组,其中所有子数组元素都将递归地连接到其中,直到指定的深度为止。

var x = [[1,2],[3,4],[5,6]];
x = x.flat();
console.log(x);

答案 1 :(得分:2)

有很多方法可以实现这一目标。我在下面列出了一些。

var a = [[1,2], [1,2], [1,2]];
console.log(a.flat());
console.log([].concat(...a));
console.log(a.reduce((c,d) => c.concat(d), []));

参考文献Array.flatArray.reduceArray.concat

答案 2 :(得分:2)

您正在寻找的操作称为“展平”。有一种https://github.com/googlesamples/android-architecture-components/issues/20方法可以做到这一点。

const x = [[1,2,3],[3,4]]
console.log(x.flat())

答案 3 :(得分:0)

尝试一下。

const arr = [[1,2], [2,3], [1,2]];

const flat = arr.reduce((acc, val) => acc.concat(val), []);

console.log(flat);