我有两个数组对象并想合并它们。但是由于某种原因,它被插入到第一个数组的下一级
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"}]
答案 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()
的潜在优势是您无需修改first
或first2
,而是创建一个新数组。如果您正在以功能性且不可变的方式为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);