不能读取property 'push'组合数组时未定义的

Cannot read property 'push' of undefined when combining arrays

本文关键字:数组 未定义 组合 push 读取 不能读 不能 property      更新时间:2023-09-26

当将一个数组的内容压入另一个数组时,我得到

"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 = [ ];

orderObject,不是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

  1. 定义并初始化第一个

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