所以,我有一个充满了一个对象数组的数组
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}]]
数组仍然存在
答案 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)