2016-05-25 15 views
1

配列内のオブジェクト内の配列を参照しているループを作成できません。配列内のオブジェクト内の配列の長さを計算する

var data_dictionary = [{ 
    "category": "Food", 
    "items": [ 
     { 
      "object": "Apple", 
      "price": 2.21 

     }, 
     { 
      "object": "Banana", 
      "price": 1.12 
     } 
    ] 
    }, { 
    "category": "Goods", 
    "items": [ 
     { 
      "object": "Lawnmower", 
      "price": 25.55 
     }, 
     { 
      "object": "Bicycle", 
      "price": 12.21 
     } 
    ] 
    } 
] 

私は、「オブジェクト」の#を返しますループを実行したいと思いますが、私は問題はC」の長さを計算することに関係している問題

var result =[] 
var temp = [] 
    for (var i=0; i < data_dictionary.length; i++) { 
     for (var c=0; c < data_dictionary[i].items.length; c++) { 
      temp.push (data_dictionary[i].items[c].object) 
     } 
     } 
     result.push (temp.length) 

に実行していますよ< data_dictionary [i] .items.length "であり、次の行でも同様です。

理想的には、4つのオブジェクトがあるため、結果は4になります。

読んでいただきありがとうございます。

+0

募集の結果を追加してください取得します。それはオブジェクトでオブジェクトを持つ数字か配列ですか? –

+0

ここで 'data_dictionary'は要素が1つしかない配列です。これはタイプミスか間違いですか? – MysterX

+0

あなたの入力data_dictionaryは適切に形成された配列ではありません...それを確認してください...ブラケットのいくつかが欠落しています... – seekers01

答えて

0

正しいデータ構造(}, {がありません。また、一部の文字列が終了しない場合もあります)を使用すると、配列を作成したり、発生をカウントすることができます。

var data_dictionary = [{ "category": "Food", "items": [{ "object": "Apple", "price": 2.21 }, { "object": "Banana", "price": 1.12, }] }, { "category": "Goods", "items": [{ "object": "Lawnmower", "price": 25.55 }, { "object": "Bicycle", "price": 12.21 }] }], 
 
    result = []; 
 

 
data_dictionary.forEach(function (a) { 
 
    a.items.forEach(function (b) { 
 
     result.push(b.object); 
 
    }); 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

0

私が正しくあなたを理解している場合、あなたは内側の配列の長さを持つ配列として出力を望んでいました。

まずあなたが正しく、あなたは、例えば.filter()機能を使用して、それを反復処理することができます 、有効であるために、あなたのデータをフォーマットする必要があります。

var data_dictionary = [{ 
    "category": "Food", 
    "items": [ 
     { 
      "object": "Apple", 
      "price": 2.21 

     }, 
     { 
      "object": "Banana", 
      "price": 1.12 
     } 
    ] 
    }, { 
    "category": "Goods", 
    "items": [ 
     { 
      "object": "Lawnmower", 
      "price": 25.55 
     }, 
     { 
      "object": "Bicycle", 
      "price": 12.21 
     } 
    ] 
    } 
] 

var result; 
var temp = []; 
for (var i=0; i < data_dictionary.length; i++) { 
    for (var c=0; c < data_dictionary[i].items.length; c++) { 
     temp.push (data_dictionary[i].items[c].object) 
    } 
} 
result = temp.length 
1

あなたのデータとコードをあなたのコードには}と{がないので、以下のように別のオブジェクトを作成します。

var data_dictionary = [{"category":"Food", 
"items":[ 
{"object":"Apple", 
    "price":"​2.21" 
}, 
{"object":"Banana", 
"price":"1.12" 
} 
]}, 

{"category":"Goods", 
"items":[{ 
    "object":"Lawnmower", 
"price":"25.55" 
},  
{ 
"object":"Bicycle", 
"price":"12.21" 
}] 
}] 
var $data_dictionary = $(data_dictionary); 

単純なコードを書くためにjQueryを使用できます。ここ

var result = []; 
$data_dictionary.each(function(index,elt){ 
$(elt.items).each(function(itemIndex, itemElt){ 
result.push(itemElt); 
});}); 

あなたは4つのオブジェクト

+0

ありがとうParag - ちょうどそれを更新しました。私は配列の小さな側面を書き出して、それを間違っていた。 –

+0

@AdamReed乾杯! –

0

であるべき

var data_dictionary = [ { 
    "category": "Food", 
    "items": [ 
     { 
      "object": "Apple", 
      "price": '​2.21' 
     }, 
     { 
      "object": "Banana", 
      "price": '1.12' 
     } 
    ] 
    }, 
    { 
    "category": "Goods", 
    "items": [ 
     { 
      "object": "Lawnmower", 
      "price": '25.55' 
     }, 
     { 
      "object": "Bicycle", 
      "price": '12.21' 
     } 
    ] 
    }]; 


var result = data_dictionary.map(function(n) { 
    return n.items.length; 
}) 

console.log(result); 
関連する問題