配列のコンテンツを別の配列にプッシュすると、
このスニペットの「不明なTypeError:未定義のプロパティ「プッシュ」を読み取れません」エラー。
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]); }
}
2番目のifステートメントでこのエラーが発生するのはなぜですか?どうもありがとう!
order[1]
がundefined
であるため、エラーが発生します。
このエラーメッセージは、コードのどこかで、何らかの名前(ここでは「プッシュ」)でプロパティにアクセスしようとしているが、オブジェクトの代わりに、参照のベースが実際にundefined
であることを意味します。したがって、問題を見つけるには、そのプロパティ名(「プッシュ」)を参照するコードを探し、その左側にあるものを確認します。この場合、コードは
if(parseInt(a[i].daysleft) > 0){ order[1].Push(a[i]); }
つまり、コードはorder[1]
が配列であることを期待しています。ただし、not配列です。 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]; }
}
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);
または、配列以外のオブジェクトの配列として順序を使用できます。
var order = new Array();
order.Push(a[n]);
このエラーは、配列を空白に初期化していないときにangularで発生します。
例:
userlist:any [];
this.userlist = [];
または
serlist:any = [];
ほとんどの場合、配列を初期化する必要がありますが、
let list: number[] = [];
あなたの質問への答えは単純な順序であり、オブジェクトではなく配列です。 var order = new Array(); order.Push(/ プッシュするアイテム /);このエラーが表示されたら、エラーがどのプロパティの左にあるかを確認してください。この場合、Pushはorder []であるため未定義です。
インデックスを指定する必要はありません。
order[0].Push(a[i])
を実行する代わりに、order.Push(a[i])
を実行してください。
order []は未定義であるため、
Order [1] ... [n] to = some valueを定義するだけです
これで修正されるはずです