Как настроить только часть массива, но другие части остаются прежними?

#javascript #html #arrays

#язык JavaScript #HTML #массивы

Вопрос:

это мой массив

 export const someList = {  something1: 'some string 1',  someArr: [  {  item: 'item 1',  },  },  {  item: 'item 2',  },  },  {  item: 'item 3',  },  ],  something2: {  some: 'some string 2'  },  };  

Итак, я пытаюсь создать новый массив, который выглядел бы следующим образом:

 export const newList = {  something1: 'some string 1',  someArr: [  {  item: 'item 1',  },  },  {  item: 'item 2',  },  ],  something2: {  some: 'some string 2'  },  };  

Так что все остается по-прежнему, за исключением того, что newList берутся только первые два предмета из someArr .

Я попробовал это, и это работает правильно, но я не знаю, как сохранить «внешние» части в новом массиве (что-то 1 и что-то 2).

 const newList = someList.someArr.slice(0, 2)  

Как я могу создать новый массив, сохранив то, что я хочу, но все равно вырезая элементы из более глубокого вложенного массива?

Спасибо.

Комментарии:

1. Вам нужен новый массив или совершенно новый объект? Вы посылаете смешанные сигналы своим вопросом и комментариями. Массив-это только квадратные скобки, объект-фигурные скобки. Вам нужен измененный объект, новый объект, измененный массив в объекте или новый массив внутри объекта?

Ответ №1:

То, что ответил Event_Horizon, правильно.

Еще один способ создания нового объекта:

 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) 

Ответ №2:

Хорошо, после комментариев я перечитал вопрос, я думаю, что вы пытаетесь создать новый ОБЪЕКТ, а не новый МАССИВ (фигурные скобки-это объект).

Поэтому, если в вашем коде сделать глубокую копию ОБЪЕКТА, а затем изменить внутренний массив, он будет выглядеть так:

 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);  

Комментарии:

1. Как это помогает? Пожалуйста, посмотрите мой вопрос еще раз.

2. Я не хочу изменять массив, я хочу создать новый.