連想配列(?)で同じキーの値をまとめたい

実現したいこと

連想配列で同じキーの値をまとめたい

前提

var list = [
{ "東北": "山形"},
{ "東北": "岩手"},
{ "東北": "宮城"},
{ "関東": "千葉"},
{ "東北": "青森"},
{ "近畿": "三重"},
{ "近畿": "兵庫"},
{ "東北": "福島"}
];

の配列を
"東北":["山形","岩手","宮城","青森","福島"]
"関東":["千葉"]
"近畿":["三重","兵庫"]
の様に加工したいです。

それでいろいろ調べて似たようなコードが有ったので参考にしましたが、
そのコード自体が間違っているようですが、自分ではどこを修正すればいいのか、
解りません。どうぞご指導ください。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13207140713
の oishii_mahouさんを参考にしましたが...

該当のソースコード

javascript

12 <script>3 var list = [4 { "東北": "山形"}, 5 { "東北": "岩手"},6 { "東北": "宮城"},7 { "関東": "千葉"},8 { "東北": "青森"},9 { "近畿": "三重"},10 { "近畿": "兵庫"},11 { "東北": "福島"}12 ];13 14 var obj = new Object();15 for(let key in Object.assign(...list)){ //配列をコピーしてそのkeyをforする 16 obj[key] = new Array(); //新しい配列を生成17 for( let i=0; i<list.length; i++ ){ //配列内の同じkeyをfor18 if( list[i][key] != undefined ){ //未定義の場合19 obj[key].push( list[i][key]);20 }21 }22 }23 24console.log(obj);25console.log(obj["東北"]);26console.log(obj["近畿"]);27console.log(obj["関東"]);28</script>

/* 上記結果は
"東北":["福島","岩手","宮城","青森","福島"]
"近畿":["兵庫","三重","兵庫"]
"関東":["千葉","千葉"]
*/ 

/* 希望結果は
"東北":["山形","岩手","宮城","青森","福島"]
"関東":["千葉"]
"近畿":["三重","兵庫"]
*/

試したこと

コードの試行錯誤はしましたが、検討がつきませんでした。

コメントを投稿

0 コメント