2011-07-19 4 views
0
var object = [{key1:'value',key2:'value2'},{'key1:'value',key2:'value2}] 

for (var key in object) 
    { 
     if(!object.hasOwnProperty(key)){continue;} 

なぜエラーが発生しますか?私は正しい方法をチェックしていますか?オブジェクトにキーがあるかどうかをチェックインする方法は?

私はerror cannot call hasOwnProperty in an Object - TypeError

+0

完全な例を* valid *構文で投稿してください。明らかに実際のコードの完全な例ではありません。あなたが投稿したものから何かを教えることは不可能です。 – user113716

+0

引用符がうんざりしていて、配列は 'object'ではなく' array'と呼ばれています – andyb

+0

@andyb:ちょうどうんざりされたもの –

答えて

2

objectが定義されていません取得します。この改訂を確認してください:

var myarr = [{key1:'value',key2:'value2'},{key1:'value',key2:'value2'}]; 
//renamed to myarr to avoid confusion - and removed typos from your code. 
//myarr is now an array of objects 

//loop through myarr 
for (var i=0;i<myarr.length;i=i+1){ 

//check if the element myarr[i] is indeed an object 
if (myarr[i].constructor === Object) { 

    //loop through the object myarr[i] 
    for (var key in myarr[i]) { 

     //notice the removal of ! 
     if(myarr[i].hasOwnProperty(key)){ 
     /* do things */ 
     } 
    } 
} 
} 
+0

@Kooilnc:!{NOT}の削除はここでは何を意味しますか?それは間違っていますか? –

+0

@ジョン:あなたはそれを必要としません。おおまかに言い訳をすると、あなたがループしているオブジェクトにプロパティが属しているかどうかをチェックしたいと思います。あなたはループしているオブジェクトの 'hasOwnProperty'を使用します。したがって、trueを返す場合、プロパティはオブジェクトに属しています(該当する場合、オブジェクト 'ancestors'のいずれにも属しません)。さもなければ、ループは明示的にそれを開始する必要なく次のキーに 'continue'sします。 – KooiInc

0

for-loopは正しいですか?試してみてください

for (var key in array) 
{ 
    ... 
0

forループにはobjectが定義されていません。上記のオブジェクトの配列の名前はarrayです。

for (var key in array) { 

} 
関連する問題