連想配列をキーでグループ化する方法について
あらかじめ配列のグループキー(category)で順序をソート済みの場合に、
順序を保つ配列にしたいです。
連想配列をキーでグループ化する記事を読んだのですが、
https://teratail.com/questions/85909
この方法だとグループ名(categoryの値)の昇順になってしまうため、下記の取得したいデータ形式に変更したいです。
new map()で連想配列の順序を保つ方法もありますが、それは使わずに、
下記の取得したいデータ形式にする方法がないかと思い考えています。
ご教授お願いします。
javascript
1 var foods = [ 2 { 'name': 'Apple', 'category': 'fruits' }, 3 { 'name': 'Strawberry', 'category': 'fruits' }, 4 { 'name': 'Tomato', 'category': 'vegetables' }, 5 { 'name': 'Carot', 'category': 'vegetables' }, 6 { 'name': 'water', 'category': 'drink' }, 7 { 'name': 'beer', 'category': 'drink' }, 8 ]; 9 10 var expected = {}; 11 $.map(foods, function (item, index) { 12 var category = item["category"]; 13 if (typeof expected[category] == "undefined") { 14 expected[category] = []; 15 } 16 expected[category].push(item); 17 }); 18 19 console.log(expected);
text
1// 取得したいデータ 2 [0] =>[fruit, 3 [ [0] => { 'name': 'Apple'}, [1] => { 'name': 'Strawberry'}, ... ] 4 ], 5 [1] => [vegetables, 6 [ [0] => { 'name': 'Tomato'}, ... ] 7 ], 8 [2] => [drink, 9 [ [0] => { 'name': 'water'}, ... ] 10 ],
回答2件
あなたの回答
tips
プレビュー