When pushing an array's contents to another array I get

"未捕获的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]); }
}

为什么在第二个if语句中会出现这个错误?

推荐答案

You get the error because order[1] is undefined.

该错误消息意味着在代码中的某个地方,试图访问具有某个名称的属性(这里是"push"),但引用的基数实际上是undefined,而不是对象.因此,要找到问题,您需要查找引用该属性名称("push")的代码,并查看其左边是什么.在本例中,代码是

if(parseInt(a[i].daysleft) > 0){ order[1].push(a[i]); }

which means that the code expects order[1] to be an array. It is, however, not an array; it's undefined, so you get the error. Why is it undefined? Well, your code doesn't do anything to make it anything else, based on what's in your question.

现在,如果您只想在对象的特定属性中放置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]; }
}

Jquery相关问答推荐

使用 Ajax 列出数据(仅显示最后的数据)

可以推迟 jQuery 的加载吗?

在正则表达式字符括号中包含连字符?

在 jQuery 中构建 html 元素的最清晰方法

在 Javascript 中启用和禁用 Div 及其元素

使用 jQuery click 处理锚点 onClick()

如何使用Angular 检测浏览器后退按钮单击事件?

不使用插件的 jQuery 缓动函数

jQuery.parseJSON 与 JSON.parse

使用跨域帖子发送凭据?

如何使div全屏?

即使通过Javascript代码判断,如何触发复选框单击事件?

动态创建并提交表单

如何将文本从 div 复制到剪贴板

检测夹点的最简单方法

如何删除/更改 JQuery UI 自动完成助手文本?

jQuery从字符串中删除'-'字符

jQuery - 从元素内部 Select 元素

在某个点停止固定位置滚动?

jQuery:通过 .attr() 添加两个属性;方法