Cuando se empuja un array con el contenido de otra matriz puedo obtener

«Uncaught TypeError: No se puede leer la propiedad «empuje » undefined» error
en este fragmento.

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

¿Por qué me sale este error en el segundo si declaración ?
Muchas gracias!

InformationsquelleAutor d3nm4k | 2014-07-19

7 Comentarios

  1. 54

    De obtener el error porque order[1] es undefined.

    Que mensaje de error significa que en algún lugar en el código, se está intentado acceder a una propiedad con un nombre (aquí es «push»), pero en lugar de un objeto, la base para la referencia es undefined. Por lo tanto, para encontrar el problema, tendría que busque el código que se refiere a que el nombre de la propiedad («push»), y ver lo que está a la izquierda de la misma. En este caso, el código es

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

    lo que significa que el código de espera order[1] a ser una matriz. Es, sin embargo, no una matriz; es undefined, para obtener el error. ¿Por qué es undefined? Así, el código no hace nada para hacer cualquier otra cosa, en función de lo que en su pregunta.

    Ahora, si usted sólo desea lugar a[i] en una determinada propiedad del objeto, entonces no hay necesidad de llamar .push() a todos:

    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]; }
    }
    • si se define, como un objeto.. ¿no debería ser capaz de utilizar cualquier número en la cuenta?
    • no. Usted tiene que inicializar order[0], order[1], y order[2] tiene algún valor (una matriz supongo). Que no puede hacer por ti; ¿por qué?
    • OH, lo tengo! Yo he dedicar más horas sólo para llegar orden[1] = []; out. Gracias!
    • Sí @d3nm4k eso es exactamente correcto 🙂
  2. 20

    order es un Object, no un Array().

    push() es para las matrices.

    Consulte para este post

    Probar esto, sin embargo, (pero su subobjetos tiene que ser Arrays()):

    var order = new Array();
    
    //initialize order; n = index
    order[n] = new Array();
    
    //and then you can perform push()
    order[n].push(some_value);

    O simplemente puede usar como una serie de no-objetos de la matriz:

    var order = new Array();
    
    order.push(a[n]);
    • Incluso si yo lo defino como una matriz, todavía me da el mismo error.
    • no te quieren sólo para poner el valor de a[i] en cualquiera de las posiciones 0, 1, o 2? Si es así, no se utiliza .push() para que. El .push() método es para agregar valores a la fin de una matriz.
    • Sorprendentemente, el error se ha ido.
  3. 13

    Este error se produce en angular cuando no inicializar la matriz en blanco.

    Por ejemplo:

    lista de usuarios: cualquier[ ];

    este.lista = [ ];

    lista de usuarios: cualquier = [ ];

    • Si desea una forma segura conjunto de tipos a continuación, public _userList: User[] = []
  4. 1

    respuesta a tu pregunta es simple orden no es un objeto de hacer una matriz.
    var order = new Array();
    orden.push(/elemento de empuje/);
    cuando aparece este error simplemente marque la casilla a la izquierda de la cual la propiedad es el error en este caso es el empuje que es el fin[] así es indefinido.

    • la respuesta ya está publicado anteriormente… usted acaba de re-escritura de la misma
  5. 1

    Usted no necesita dar un índice.

    Lugar de hacer order[0].push(a[i]), acaba de hacer order.push(a[i]).

    • CyanCoding .. gracias por editar
  6. 0

    orden[] no está definido es por eso que

    Acaba de definir el orden[1]…[n] a = valor

    esto debería solucionar el problema

Dejar respuesta

Please enter your comment!
Please enter your name here