Я пытаюсь добавить новое сообщение в существующий объект 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;
Есть две основные проблемы, первая из которых заключается в том, что вы инициализируете пустую строку вместо пустого массива:
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'
});
Примечание: лучше всего использовать точечную нотацию для известных свойств и скобочную нотацию для динамических свойств
Вам нужно инициализировать массив:
initialData.warnings = [];
Также как @Rob сказал для недопустимой скобки.
initialData.warnings.push({
title: ' Major Warning'
,msg: 'This is a major warning'] <--- INVALID BRACKET
});
в 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
}
Проблема в этой строке:
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);
Пожалуйста, удалите скобку после Сообщение: «Это серьезное предупреждение»
initialData['warnings'].push({
title: ' Major Warning'
,msg: 'This is a major warning'
});