推送方法插入嵌套记录

时间:2018-10-19 23:54:37

标签: javascript node.js

我有两个数组对象并想合并它们。但是由于某种原因,它被插入到第一个数组的下一级

let first = [{name:'a'},{name:'b'}];
let first2 = [{name:'aa'},{name:'bb'}];
first.push(first2);

现在如果我打印第一个对象,它将显示以下输出

[{name: "a"},{name: "b"},[ {name: "aa"}, {name: "bb"}]]

我需要此输出[ {name: "a"}, {name: "b"}, {name: "aa"}, {name: "bb"}]

3 个答案:

答案 0 :(得分:2)

Spread first2数组用于推送项目,而不是整个数组:

let first = [{name:'a'},{name:'b'}];
let first2 = [{name:'aa'},{name:'bb'}];
first.push(...first2);

console.log(first);

答案 1 :(得分:1)

我知道您问过.push(),但是我更喜欢在这些情况下使用的另一种方法是.concat()方法。使用.concat()的潜在优势是您无需修改​​firstfirst2,而是创建一个新数组。如果您正在以功能性且不可变的方式为Redux之类的库进行编程,这将非常有用。

let first = [{name:'a'},{name:'b'}];
let first2 = [{name:'aa'},{name:'bb'}];
let both = [].concat(first, first2);

console.log(both);

答案 2 :(得分:0)

问题是您要将一个数组推入另一个数组。 .push()将一项添加到数组中,因此将整个数组视为一项。

最简单的方法是遵循this solution或使用新的ES6扩展语法,@ Ori在他的回答中指出:

let first = [{name:'a'},{name:'b'}];
let first2 = [{name:'aa'},{name:'bb'}];
first.push.apply(first, first2);

console.log(first);