将数组的内容推入另一个数组而不循环

ran*_*its 5 javascript arrays underscore.js

这是一段简单的 JavaScript,我想将orders.foo和的内容添加orders2.foo到一维ordersArr.

let _ = require('underscore');

let ordersArr = [];
let orders = {
    foo: [
        {x: 1, b: 2},
        {y: 1, c: 3},
        {a: 2, d: 4}
    ]
}

ordersArr = _.map(orders.foo, order => order)

orders2 = {
        foo: [
                {x: 2, b: 3},
                {y: 5, c: 4},
                {a: 3, d: 6}
        ]
}


let tOrders = _.map(orders2.foo, order => order);
ordersArr.push(tOrders)

console.log(ordersArr);
Run Code Online (Sandbox Code Playgroud)

这段代码的问题在于,push在这种情况下创建了一个多维数组:

输出

[
  { x: 1, b: 2 },
  { y: 1, c: 3 },
  { a: 2, d: 4 },
  [ { x: 2, b: 3 }, { y: 5, c: 4 }, { a: 3, d: 6 } ]
]
Run Code Online (Sandbox Code Playgroud)

如何迭代orders.foo和的内容orders2.foo并将其结果作为一个一维数组?

Les*_*ice 7

您可以将spread两个数组的内容放入新数组中

const arr1 = [1,2,3];
const arr2 = [4,5,6];
const arr3 = [...arr1, ...arr2];
console.log(arr3);
// prints [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

传播arr2arr1也有效。

arr1.push(...arr2);
console.log(arr1);
// prints [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

如此改变

ordersArr.push(tOrders)
Run Code Online (Sandbox Code Playgroud)

ordersArr.push(...tOrders);
Run Code Online (Sandbox Code Playgroud)

应该管用。

完整答案:

let ordersArr = [];
let orders = {
    foo: [
        {x: 1, b: 2},
        {y: 1, c: 3},
        {a: 2, d: 4}
    ]
}

orders2 = {
        foo: [
                {x: 2, b: 3},
                {y: 5, c: 4},
                {a: 3, d: 6}
        ]
}

ordersArr.push(...orders.foo, ...orders2.foo);
Run Code Online (Sandbox Code Playgroud)