Использование оператора распространения в массиве объектов для доступа к элементам

Как использовать оператор распространения для доступа к элементу в моем массиве объектов?

const array = [{ obj: 1},{ obj: 2}]

console.log([...array].obj)
// Output undefined 

console.log([...array.obj])
// Output Uncaught TypeError

Я видел этот пост Использовать оператор распространения в массиве объектов? который довольно похожи, но они не пытаются получить доступ к элементам.

Итак, можно ли использовать оператор распространения в массиве объектов для доступа к элементам? Если да, то как?


person user15873596    schedule 19.05.2021    source источник
comment
Что вы ожидаете на выходе? И 1, и 2?   -  person Ivar    schedule 19.05.2021
comment
Да все верно   -  person user15873596    schedule 19.05.2021
comment
[...array] -> клонирует array в новый массив. Вы берете свойство .obj этого массива. У массивов нет свойства .obj, поэтому вы получаете неопределенность. [...array.obj] -> разложить array.obj в виде массива. Поскольку у массивов нет свойства .obj, вы делаете разброс массива undefined. Это вызывает ошибку.   -  person VLAZ    schedule 19.05.2021
comment
Короче говоря, вы не можете использовать такой оператор спреда в JS.   -  person Ivar    schedule 19.05.2021


Ответы (2)


Вероятно, вы ищете map

Вам нужно array.map(element => element.obj)

Вот что не так с вашими попытками:

  • console.log([...array].obj): вы распространяете array в новый массив, а затем регистрируете свойство obj нового массива, которое равно undefined, как и ожидалось.

  • console.log([...array.obj]): вы пытаетесь распространить свойство obj элемента array, которое также является undefined, то есть вы пытаетесь распространить undefined, что выдает ошибку.

person Ron B.    schedule 19.05.2021
comment
Нет, извините, мой вопрос на самом деле, что это такое. Я знаю, как просматривать объект, используя такие функции, как map, forEach, for... Но это не мой вопрос. Спасибо хоть - person user15873596; 19.05.2021
comment
Еще раз спасибо за ваше редактирование и помощь. Так что нет возможности использовать синтаксис распространения для доступа к моим элементам? Я должен использовать функцию? - person user15873596; 19.05.2021
comment
@ user15873596 распространение не работает как отображение. Итак... нет, вы не можете заставить его работать как отображение. - person VLAZ; 19.05.2021
comment
Спасибо @VLAZ, это то, что я искал :) - person user15873596; 19.05.2021
comment
@user15873596 user15873596 Оператор распространения точно такой же, как он говорит, он используется для распространения массива в новый массив или пар ключ-значение объекта в новый объект, как есть. Вы не можете изменять данные с помощью этого оператора - person Ron B.; 19.05.2021

Короткий ответ: нет.

Мы не можем использовать оператор распространения в массиве объектов для доступа к элементам.

Как сказал @VLAZ в комментарии

Распространение вообще не работает как картирование. Итак... нет, вы не можете заставить его работать как отображение

person user15873596    schedule 19.05.2021