En poussant le contenu d'un tableau vers un autre tableau, je reçois
Erreur "Uncaught TypeError: impossible de lire la propriété 'Push' of undefined" dans cet extrait de code.
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]); }
}
Pourquoi ai-je cette erreur dans la seconde déclaration if? Merci beaucoup!
Vous obtenez l'erreur car order[1]
est undefined
.
Ce message d'erreur signifie que quelque part dans votre code, une tentative est en cours pour accéder à une propriété avec un nom (ici, "Push"), mais au lieu d'un objet, la base de la référence est en réalité undefined
. Ainsi, pour trouver le problème, recherchez un code faisant référence à ce nom de propriété ("Push") et voyez ce qu'il y a à gauche. Dans ce cas, le code est
if(parseInt(a[i].daysleft) > 0){ order[1].Push(a[i]); }
ce qui signifie que le code s'attend à ce que order[1]
soit un tableau. C'est cependant pas un tableau; c'est undefined
, donc vous obtenez l'erreur. Pourquoi est-ce undefined
? Eh bien, votre code ne fait rien pour en faire quelque chose d'autre, basé sur le contenu de votre question.
Maintenant, si vous voulez simplement placer a[i]
dans une propriété particulière de l'objet, vous n'avez pas besoin d'appeler .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]; }
}
order
est un Object
, pas un Array()
.
Push()
est pour les tableaux.
Reportez-vous à ce post
Essayez ceci cependant (mais vos sous-objets doivent être Arrays()
):
var order = new Array();
// initialize order; n = index
order[n] = new Array();
// and then you can perform Push()
order[n].Push(some_value);
Ou vous pouvez simplement utiliser order comme un tableau d'objets non-array:
var order = new Array();
order.Push(a[n]);
Cette erreur se produit dans angular lorsque vous n'avez pas initialisé le tableau vierge.
À titre d'exemple:
userlist: any [];
this.userlist = [];
ou
serlist: any = [];
Dans la plupart des cas, vous devez initialiser le tableau,
let list: number[] = [];
répondre à votre question est simple ordre n'est pas un objet en faire un tableau. var order = new Array (); order.Push (/ élément à pousser /); chaque fois que cette erreur apparaît, il suffit de vérifier à gauche de quelle propriété l'erreur est dans ce cas c'est Push qui est order [] donc elle n'est pas définie.
Vous n'avez pas besoin de donner un index.
Au lieu de faire order[0].Push(a[i])
, faites juste order.Push(a[i])
.
ordre [] est indéfini c'est pourquoi
Il suffit de définir ordre [1] ... [n] à = une valeur
cela devrait le réparer