Javascript使用索引在数组中推送新值

时间:2017-04-13 04:58:17

标签: javascript php arrays extjs

我正在尝试在现有的javascript对象 initialData 中添加新消息。可能也有以前的警告消息,但是在代码下面会抛出错误'SCRIPT5007:无法获取未定义或空引用的属性'推送'。 在下面的代码之前定义为 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;

5 个答案:

答案 0 :(得分:2)

有两个主要问题,第一个是初始化为空字符串而不是空数组:

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'
});

附注:最好对已知属性使用点表示法,为动态属性使用括号表示法

答案 1 :(得分:1)

您需要初始化数组:

initialData.warnings = [];

另外@Rob表示无效支架。

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

答案 2 :(得分:1)

在Javascript中没有带索引概念的数组。它被称为具有键和值对的对象。你不能在对象中使用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
}

答案 3 :(得分:1)

问题出在这一行:

var initialData = false;

此定义使initialDataboolean数据类型。它应该是Object数据类型,以warnings作为其属性。所以定义应该将它定义为这样的对象:

var initialData = {};

完整代码:

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

答案 4 :(得分:0)

请在消息后删除括号:&#39;这是重大警告&#39;

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