#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. Я не хочу изменять массив, я хочу создать новый.