Javascript Push новое значение в массиве с индексами

Я пытаюсь добавить новое сообщение в существующий объект JavaScript initialData. может также иметься предыдущие предупреждающие сообщения, но приведенный ниже код выдает ошибку как «SCRIPT5007: невозможно получить свойство« push »с неопределенной или нулевой ссылкой».
Определяя как initialData [‘warnings’] = »; до этого ниже код также не решает эту проблему.

Спасибо за щедрые предложения, и я изменил код, как показано ниже, но все еще получаю сообщение об ошибке «Невозможно получить толчок свойства неопределенной или нулевой ссылки»

** Модифицированный код **

var initialData = false;
initialData.warnings = [];
initialData.warnings.push({
title: ' Major Warning'
,msg:  'This is a major warning'
});

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

*** Soultion ****

Назначьте существующие значения в массиве и вставьте новое значение в массив. После этого объекту присваивается массив.

var warnings = [] ;
warnings = initialData.warning;
warnings.push({
title: ' Major Warning'
,msg:  'This is a major warning'
});

initialData.warning = warnings;

-1

Решение

Есть две основные проблемы, первая из которых заключается в том, что вы инициализируете пустую строку вместо пустого массива:

initialData.warnings = [];

Тогда у вас есть синтаксическая ошибка как @Rohit указал:

initialData.warnings.push({
title: ' Major Warning'
,msg:  'This is a major warning'] <--- INVALID BRACKET
});

Снимите скобу и она должна нормально работать:

initialData.warnings.push({
title: ' Major Warning'
,msg:  'This is a major warning'
});

Примечание: лучше всего использовать точечную нотацию для известных свойств и скобочную нотацию для динамических свойств

2

Другие решения

Вам нужно инициализировать массив:

initialData.warnings = [];

Также как @Rob сказал для недопустимой скобки.

initialData.warnings.push({
title: ' Major Warning'
,msg:  'This is a major warning'] <--- INVALID BRACKET
});
1

в Javascript нет концепции Array с индексами. Он называется объектом, в котором есть пары ключ и значение. Вы не можете использовать метод push в объекте.

var obj={a:"A"}; // this is javascript object act like index array
obj.b= "B"; // first method
obj['c']= "C"; // second method
console.log(obj);

//iterate values and keys from javascript object
for(var i in obj){
console.log(i); // console key
console.log(obj[i]); // console value of key
}
1

Проблема в этой строке:

var initialData = false;

Это определение делает initialData как boolean тип данных. Так должно быть Object тип данных, чтобы иметь warnings как его собственность. Таким образом, определение должно определять его как объект следующим образом:

var initialData = {};

Полный код:

var initialData = {};
initialData.warnings = [];
initialData.warnings.push({
title: ' Major Warning'
,msg:  'This is a major warning'
});
console.log(initialData);
1

Пожалуйста, удалите скобку после Сообщение: «Это серьезное предупреждение»

initialData['warnings'].push({
title: ' Major Warning'
,msg:  'This is a major warning'
});
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector