在一个数组中合并多个数组

时间:2018-10-02 00:01:13

标签: javascript arrays

所以,我有一个充满了一个对象数组的数组

identity

我想做的是合并所有这些数组并使它们看起来像这样

val (lefts, rights) = List(Right(2), Left("a"), Left("b")).partitionMap(identity)
// lefts: List[String] = List(a, b)
// rights: List[Int] = List(2)

我尝试使用concat,但仍然无法正常工作

[[{id: 0, name: example1}], [{id: 1, name: example2}], [{id: 2, name: example3}]]

数组仍然存在

4 个答案:

答案 0 :(得分:5)

您的代码将展平这三个数组,如下所示:

const arr = [[{id: 0, name: 'example1'}], [{id: 1, name: 'example2'}], [{id: 2, name: 'example3'}]]

let a=arr[0], b=arr[1], c=arr[2]

let d = a.concat(b,c)
console.log(d)

但是,它不可扩展。如果数组包含6个项目,则需要再创建3个变量,等等。

将子数组展平的另一种方法是将数组spreading分成Array.concat()

const arr = [[{id: 0, name: 'example1'}], [{id: 1, name: 'example2'}], [{id: 2, name: 'example3'}]];

const result = [].concat(...arr);

console.log(result);

答案 1 :(得分:2)

展平数组是正确的方法,将数组传递给它:

function flattenDeep(arr1) {
   return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
}

您也可以为此使用lodash: https://www.npmjs.com/package/lodash.flattendeep

答案 2 :(得分:0)

您有一个数组数组。

let a=arr[0][0], b=arr[1][0], c=arr[2][0]
let d = [a, b, c]
console.log(d)

答案 3 :(得分:0)

let input = [[{id: 0, name: 'example1'}], [{id: 1, name: 'example2'}], [{id: 2, name: 'example3'}]]

output = input.map(([firstElementOfArray]) => firstElementOfArray)

console.log(output)