2011-09-17 19 views
5

私は、このデータを持っている:辞書の配列を配列の辞書に照合する方法は?

list = [ 
     {name:'apple', category: "fruit", price: 1.22 }, 
     {name:'pear', category: "fruit", price: 2.22 }, 
     {name:'coke', category: "drink", price: 3.33 }, 
    {name:'sprite', category: "drink", price: .44 }, 
    ]; 

そして私は、その値がそのカテゴリのすべての製品を含む配列であるカテゴリ、上キー辞書を作成したいと思います。これを行うには私の試みは失敗しました:

var tmp = {}; 
    list.forEach(function(product) { 
     var idx = product.category ; 
     push tmp[idx], product; 
    }); 
    tmp; 
+2

プッシュ型tmp [idx]、product;は有効ではありません。 –

答えて

5
function dictionary(list) { 
    var map = {}; 
    for (var i = 0; i < list.length; ++i) { 
     var category = list[i].category; 
     if (!map[category]) 
      map[category] = []; 
     map[category].push(list[i].name); // add product names only 
     // map[category].push(list[i]); // add complete products 
    } 
    return map; 
} 
var d = dictionary(list); // call 

をあなたはjsfiddle上でそれをテストすることができます。

関連する問題