d3n*_*m4k 51 javascript console jquery web
当我将数组的内容推送到另一个数组时
"未捕获的TypeError:在此代码段中无法读取未定义的属性'push'错误.
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]); }
}
Run Code Online (Sandbox Code Playgroud)
为什么我在第二个if语句中出现此错误?非常感谢!
Poi*_*nty 56
你得到的错误,因为order[1]是undefined.
该错误消息意味着在代码中的某个地方,正在尝试访问具有某个名称的属性(此处为"push"),但实际上是参考的基础而不是对象undefined.因此,要找到问题,您需要查找引用该属性名称("push")的代码,并查看其左侧的内容.在这种情况下,代码是
if(parseInt(a[i].daysleft) > 0){ order[1].push(a[i]); }
Run Code Online (Sandbox Code Playgroud)
这意味着代码期望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]; }
}
Run Code Online (Sandbox Code Playgroud)
Kyl*_*uel 21
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);
Run Code Online (Sandbox Code Playgroud)
或者您可以将order用作非数组对象的数组:
var order = new Array();
order.push(a[n]);
Run Code Online (Sandbox Code Playgroud)
小智 14
当您未初始化数组空白时,会在角度发生此错误。
例如:
userlist:any [];
this.userlist = [];
或用户列表
:any = [];