esta es mi matriz
export const someList = { something1: 'some string 1', someArr: [ { item: 'item 1', }, }, { item: 'item 2', }, }, { item: 'item 3', }, ], something2: { some: 'some string 2' }, };Ok, entonces lo que estoy tratando de lograr es construir una nueva matriz que se vería así:
export const newList = { something1: 'some string 1', someArr: [ { item: 'item 1', }, }, { item: 'item 2', }, ], something2: { some: 'some string 2' }, }; Entonces todo permanece igual, excepto que newList toma solo los dos primeros elementos de someArr .
He intentado esto y funciona correctamente, pero no sé cómo mantener las partes "externas" en una nueva matriz (algo1 y algo2).
const newList = someList.someArr.slice(0, 2)¿Cómo puedo construir una nueva matriz, manteniendo lo que quiero, pero aún cortando los elementos de una matriz anidada más profunda?
Gracias.
Ok, después de los comentarios, volví a leer la pregunta, creo que está tratando de hacer un nuevo OBJETO , no una nueva ARRAY (las llaves son un objeto).
Entonces, con su código para hacer una copia profunda de OBJECT , luego cambie la matriz interna, se verá así:
export const someList = { something1: 'some string 1', someArr: [ { item: 'item 1', }, }, { item: 'item 2', }, }, { item: 'item 3', }, ], something2: { some: 'some string 2' }, }; let newList=JSON.parse(JSON.stringify(someList)); newList.someArr=newList.someArr.slice(0,2);Lo que respondió Event_Horizon es correcto.
Otra forma de crear un nuevo objeto :
const someList = { something1: 'some string 1', someArr: [ { item: 'item 1', }, { item: 'item 2', }, { item: 'item 3' } ], something2: { some: 'some string 2' }, }; let newList={...someList,someArr:someList.someArr.slice(0,2)} console.log(newList)