Estoy tratando de fusionar todos los objetos de elementos de un archivo JSON en un solo objeto de elemento. La estructura del archivo JSON se ve así;
[ {"items":["product1","product2","product3"]}, {"items":["product4","product5","product6"]}, ]Lo que quiero lograr es fusionar todos los elementos en un solo objeto de elementos como;
[ {"items":["product1","product2","product3,"product4","product5","product6"]}, ]He estado intentando concat, o esparciendo, pero no pude hacer que ninguno funcionara. ¿Cómo puedo lograr esto o cuál es el mejor método para usar en este caso?
Desea reduce , una función cuyo trabajo es "reducir" una lista de valores a un solo valor. En JavaScript, reduce es un método en cada matriz. El primer parámetro a reduce es una función que toma la cuenta actual, luego el elemento actual y devuelve la siguiente cuenta. El segundo argumento para reducir es el valor inicial de la cuenta, en nuestro caso un objeto de 'elementos' con una matriz vacía.
const LIST = [ {"items":["product1","product2","product3"]}, {"items":["product4","product5","product6"]}, ] const { items } = LIST.reduce((acc, element) => ({ items: [...acc.items, ...element.items] }), { items: [] }) console.log(items)Use Array.reduce() y el operador de propagación para insertar los elementos en un solo objeto y matriz:
const arr = [ {"items":["product1","product2","product3"]}, {"items":["product4","product5","product6"]}, ] const res = arr.reduce((acc, cur) => { acc[0].items.push(...cur.items); return acc; }, [{'items': []}]); console.log(res);No tiene mucho sentido en una matriz con un solo objeto. ¿Por qué no crear una matriz y empujar/difundir el valor de los elementos de cada objeto en ella con un bucle simple ? Mucho más legible que reduce .
const data = [ { items: ['product1', 'product2', 'product3'] }, { items: ['product4', 'product5', 'product6'] } ]; const items = []; for (const obj of data) { items.push(...obj.items); } console.log(items);