Почему в журналах говорится, что «невозможно прочитать свойство push of undefined»

У меня скоро презентация, и я думаю, что сломаю свой ноутбук.

У меня был этот прекрасно работающий код, и ничего не меняя, я получаю это сообщение.

Вот кусок кода, где я получаю ошибку

 var array = [];
    for (let i = 0; i < customerDetails.length; i++){
            array[i].push(customerDetails[i].name);
    }

Кстати, customerDetails — это массив объектов, т.е. [{}, {}, {}]

Как, черт возьми, массив НЕ определен? Первоначально у меня было определение массива в другом месте (вне функции, поэтому оно работало нормально, и я переместил его прямо туда, чтобы проверить).

Либо я слишком устал и не вижу этого, либо есть другая проблема, которая на самом деле приводит к этому? сама ошибка мне непонятна.

Обновлено: Я помещаю ответ снизу здесь, не должно быть array[i].push, а вместо этого array.push Хотя я не изменил это, я все равно должен это видеть. Спасибо этому сообществу за помощь, вы действительно молодцы!

Wht array[i].push, внутри массива есть массив или что??

Shubh 01.03.2019 11:20

Вы никогда не определяете array[i], поэтому вы не можете push к нему, это не массив

CertainPerformance 01.03.2019 11:20

@AwadMaharoof - Вероятно, нет, учитывая, что array.length есть 0, и поэтому тело цикла hte никогда не запустится.

T.J. Crowder 01.03.2019 11:21

Почему бы не просто array = customerDetails.map(({ name }) => name)?

jonrsharpe 01.03.2019 11:22

Если у вас есть массив и вы хотите поместить объект внутрь этого массива, вам не следует писать array[i].push() — вы должны написать array.push() array[i].push будет использовать, если у вас есть массив массивы.

Johar Zaman 01.03.2019 11:22

Спасибо всем, ребята, действительно что-то было изменено другим человеком, и я не мог этого видеть, потому что я не спал несколько часов. Спасибо!!!

Vaggouras 01.03.2019 11:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
84
3

Ответы 3

push() — это функция, связанная с array. Вы помещаете значение в элемент массива, используя array[i].push(), который недействителен и отсутствует. Нажмите прямо на array с помощью array.push()

var array = [];
    for (let i = 0; i < customerDetails.length; i++){
            array.push(customerDetails[i].name);
    }

"Вы помещаете значение в элемент массива... который недействителен"... в Это дело. Если array = [[]], то array[0].push(...) будет совершенно правильным.

Amadan 01.03.2019 11:23

@Vaggouras рад помочь

ellipsis 01.03.2019 11:27

Используйте array.push вместо array[i].push

var array = [];
for (let i = 0; i < customerDetails.length; i++){
        array.push(customerDetails[i].name); // no need give array index while pushing data
}
var array = [];
    for (let i = 0; i < customerDetails.length; i++){
            array.push(customerDetails[i].name);
    }

Вы не можете использовать array[i].push(), потому что он ссылается на один элемент в массиве, а не на сам массив.

Другие вопросы по теме