不能读取property 'push'组合数组时未定义的
Cannot read property 'push' of undefined when combining arrays
当将一个数组的内容压入另一个数组时,我得到
"Uncaught TypeError: Cannot read property 'push' of undefined"错误
var order = new Object(), stack = [];
for(var i=0;i<a.length;i++){
if(parseInt(a[i].daysleft) == 0){ order[0].push(a[i]); }
if(parseInt(a[i].daysleft) > 0){ order[1].push(a[i]); }
if(parseInt(a[i].daysleft) < 0){ order[2].push(a[i]); }
}
为什么我在第二个if语句中得到这个错误?非常感谢! 您得到错误,因为order[1]
是undefined
。
这个错误消息意味着在你的代码的某个地方,正在尝试访问一个属性与一些名称(这里是"push"),但不是一个对象,基础的引用实际上是undefined
。因此,要找到问题,您需要查找引用该属性名("push")的代码,并查看它的左边是什么。在本例中,代码是
if(parseInt(a[i].daysleft) > 0){ order[1].push(a[i]); }
意味着代码期望order[1]
是一个数组。然而,不是数组;它是undefined
,所以你得到了错误。为什么是undefined
?好吧,你的代码没有做任何事情来使它成为其他东西,基于你的问题。
现在,如果您只想将a[i]
放置在对象的特定属性中,则根本不需要调用.push()
:
var order = [], stack = [];
for(var i=0;i<a.length;i++){
if(parseInt(a[i].daysleft) == 0){ order[0] = a[i]; }
if(parseInt(a[i].daysleft) > 0){ order[1] = a[i]; }
if(parseInt(a[i].daysleft) < 0){ order[2] = a[i]; }
}
当你没有初始化数组blank时,angular会出现这个错误。
例如:
userlist: any[ ];
this.userlist = [ ];
或
userlist: any = [ ];
order
是Object
,不是Array()
。
push()
用于数组。
参考这篇文章
试试这个(但是你的子对象必须是Arrays()
):
var order = new Array();
// initialize order; n = index
order[n] = new Array();
// and then you can perform push()
order[n].push(some_value);
或者您可以直接使用order作为非数组对象的数组:
var order = new Array();
order.push(a[n]);
大多数情况下必须初始化数组
let list: number[] = [];
我用下面的方式修复了typescript
- 定义并初始化第一个
pageNumbers: number[] = [];
-
>
for (let i = 1; i < 201; i++) { this.pageNumbers.push(i); }
一般来说,Push方法用于在数组末尾添加元素。
在这里,你使用了push方法到一个对象,而不是一个数组,它是'order'。
调试步骤…
将对象更改为空数组,
var order = [], stack = [];
现在你可以像往常一样使用push方法了。
对order数组使用push方法;在对数组调用push方法时不应该使用数组索引。只使用数组的名称。
var order = [], stack = [];
for(var i = 0; i<a.length; i++){
if(parseInt(a[i].daysleft) == 0){
order.push(a[i]);
}
if(parseInt(a[i].daysleft) > 0){
order.push(a[i]);
}
if(parseInt(a[i].daysleft) < 0){
order.push(a[i]);
}
}
不需要给出索引。
不做order[0].push(a[i])
,只做order.push(a[i])
。
回答你的问题是简单的顺序不是一个对象,使它成为一个数组。var order = new Array();秩序。Push (/item to Push /);当这个错误出现的时候检查一下错误属性的左边在这个例子中是push也就是order[]所以它是未定义的
order[]是undefined,这就是为什么
Just define order[1]…[n] to = some value
- 用HTML5FileReader填充的Javascript多维数组未定义(但仅在首次使用时!)
- 访问节点js中对象内部的数组-未定义
- 嵌套的“for”循环 - 数组未定义
- Javascript 数组未定义的值
- 我的 JS 数组未定义 x 7 的问题
- JSON 多维数组未显示(“数组未定义”)
- 挖空嵌套模型可观察数组未定义
- 嵌套对象,访问父对象中的对象数组 = 未定义
- 对象的Javascript数组未定义
- Javascript数组未定义..并且I'I’我不知道为什么
- json对象数组未定义错误
- Javascript数组未定义,没有大小
- Javascript全局数组未定义
- JavaScript二维数组未定义
- 控制台显示数组未定义
- $ajax请求不能保存到数组(未定义)
- 为什么我的数组“未定义”?
- JSON数组未定义
- 类型错误:数组未定义
- JSON数据到Javascript数组未定义