Aquí hay una pieza simple de JavaScript donde quiero agregar el contenido de orders.foo y orders2.foo a un ordersArr unidimensional.
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); El problema con este código es que push en este caso crea una matriz multidimensional:
Producción
[ { x: 1, b: 2 }, { y: 1, c: 3 }, { a: 2, d: 4 }, [ { x: 2, b: 3 }, { y: 5, c: 4 }, { a: 3, d: 6 } ] ] ¿Cómo itero el contenido de orders.foo y orders2.foo y obtengo sus resultados como una matriz de una sola dimensión?
Puede spread el contenido de ambas matrices en la nueva matriz
const arr1 = [1,2,3]; const arr2 = [4,5,6]; const arr3 = [...arr1, ...arr2]; console.log(arr3); // prints [1,2,3,4,5,6] Difundir arr2 en arr1 también funciona.
arr1.push(...arr2); console.log(arr1); // prints [1,2,3,4,5,6]tan cambiando
ordersArr.push(tOrders)a
ordersArr.push(...tOrders);Deberia trabajar.
Para una respuesta completa:
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);El operador de propagación mencionado anteriormente es la mejor manera de hacerlo en 2021.
let ordersArr = [...orders.foo, ...orders2.foo];Usando guión bajo _.flatten :
const 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} ] }; const ordersArr = _.flatten([orders.foo, orders2.foo]); console.log(ordersArr); <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js"></script> Usando spread operator javascript:
const 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} ] }; const ordersArr = [...orders.foo, ...orders2.foo]; console.log(ordersArr); Usando javascript Array#concat :
const 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} ] }; const ordersArr = orders.foo.concat(orders2.foo); console.log(ordersArr);