2016-05-27 14 views
0

データの追加と削除についてjsonオブジェクトについて非常に基本的な説明があります。jsonオブジェクトからのデータの抽出

は、上記の例で

var mainobject = JSON.parse('[{"Innerobject1":[{"Name" :"Xavier","Dup":"B"},{"Name" :"Gh","Dup":"B"}]},{"Innerobject2":[{"Name" : "Cat","Dup":"C"},{"Name":"Dog", "Dup":"D"}]}]'); 

var seen = {}; 

mainobject.forEach(function(inner_arr) { 
Object.keys(inner_arr).forEach(function(k) 
{ 
    inner_arr[k].forEach(function(obj) { 

     if (seen[obj.Dup]) { 
      obj.Dup = ""; 
     } 

     seen[obj.Dup] = true; 
     //alert(seen[obj.Dup]); 
     //alert(seen.(obj.Dup)); 
    }); 
}); 
}); 
alert(JSON.stringify(mainobject, 0, 4)); 

次の例を考えalert(seen.(obj.Dup));は私に任意の値を与えるdoesntのに対し、

alert(seen[obj.Dup]); として値を与えます。 私は、jsonオブジェクトを持っていると、object.keyは私に価値を与えるはずです。

同じ考えでは、見た目がjsonオブジェクトであるため、seen.(obj.Dup)は理想的に警告を「true」としてください。 オブジェクトは実行時に配列に変換されますか?

+2

は、オブジェクトの括弧の使用についてお読みくださいあなたがしている場合:。https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors –

+2

'見(OBJ .Dup) 'は有効な構文ではないので、あなたが何を期待しているのか分かりません。ドット表記を使用する場合は、変数ではなく文字列を使用する必要があります。 –

+0

@Wolffは文字列を使用していても、文字列が有効な名前でない場合(例:「これは無効な名前です」)ブラケット記法を使用する必要があります。 –

答えて

0

alert(seen[obj.Dup])を使用すると、実際にはseen[obj.Dup]が印刷されています。前の行でこれをtrueに設定しているため、常にtrueになります。

私はあなたがドット表記法との混同を持っているかもしれないと思う私は、あなたがやろうとしているかわからないが、実行の終了時に、あなたの辞書seenこの{B: true, "": true, C: true, D: true}

に等しいです。 は

a = {'b': 'c', 'd': 'e'}; 
b = 'd' 
// a.b == 'c' 
// a[b] == a['d'] 
// a[b] == 'e' 
関連する問題