我想知道如何合并一个数组数组。例如,我有以下数组:
[ [ {marca: 'fiat', modelo: 'palio'} ], [ {marca: 'nissan', modelo: 'march'} ] ]
在合并上面的数组后,我想得到这个数组:
[ {marca: 'fiat', modelo: 'palio'}, {marca: 'nissan', modelo: 'march'} ]
谢谢,谢谢。
答案 0 :(得分:2)
您可以将ES6-spread operator与Array.reduce结合使用,例如
const arr = [ [ {marca: 'fiat', modelo: 'palio'} ], [ {marca: 'nissan', modelo: 'march'} ] ];
console.log(arr.reduce((a, b) => [...a, ...b], []));
答案 1 :(得分:2)
您可以尝试使用新的但仍处于实验阶段的flat()数组方法...
const input = [
[ {marca: 'fiat', modelo: 'palio'} ],
[ {marca: 'nissan', modelo: 'march'} ]
];
console.log(input.flat());
或者也可以像这样使用reduce():
const input = [
[ {marca: 'fiat', modelo: 'palio'}, {marca: 'fiat', modelo: 'fiesta'} ],
[ {marca: 'nissan', modelo: 'march'} ]
];
let res = input.reduce((acc, curr) => acc.push(...curr) && acc, []);
console.log(res);
答案 2 :(得分:0)
有多种方法可以完成此操作。假设您的输入数据是输入数组的每一项都是具有一项的数组本身,那么使用Array#map
就足够了:
const input = [
[{
marca: 'fiat',
modelo: 'palio'
}],
[{
marca: 'nissan',
modelo: 'march'
}]
];
/*
For each subArray of input array where the subArray
is known to have a single element, extract that single
element and return it as the result of each map iteration
*/
const output = input.map(([item]) => item)
console.log(output)
或者,对于更通用的解决方案,它“展平”具有可变长度的数组项的数组,您可以通过Array#reduce
来实现,如下所示:
const input = [
[{
marca: 'fiat',
modelo: 'palio'
}, {
test: 'foo'
}],
[{
marca: 'nissan',
modelo: 'march'
}]
];
const output = input.reduce((finalArray, subArray) => {
/*
For each item being iterated during reduce, concat
the subArray to the finalArray
*/
return finalArray.concat(subArray);
}, [])
console.log(output)
答案 3 :(得分:0)
记录下来,如果您使用的是NodeJ,则有一个名为array-flatten的软件包,您可以使用
安装它npm install array-flatten --save
例如:
var flatten = require('array-flatten')
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
答案 4 :(得分:0)
有几种方法可以这样做,我建议使用Reduce,因为不需要时不需要安装npm软件包。
let arrays = [
[{
marca: 'fiat',
modelo: 'palio'
}],
[{
marca: 'nissan',
modelo: 'march'
}]
]
arrays = arrays.reduce((a, b) => a.concat(b), []);
console.log(arrays);
答案 5 :(得分:0)
我用lodash的flattenDeep方法来解决它。 例如:
_.flattenDeep(Array)
谢谢大家的回答。
答案 6 :(得分:0)
在实现的地方,您可以使用标准的Array's flat方法:
let arr = [ [ {marca: 'fiat', modelo: 'palio'} ], [ {marca: 'nissan', modelo: 'march'} ] ];
console.log(arr.flat());
或者,如果它只是一个浅平面,则可以使用concat
和散布运算符获得相同的结果:
console.log([].concat(...arr));