子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

JavaScriptでJSON形式のデータを横持ちの2次元配列に変更する方法

JavaScriptJSON形式のデータを、特定の値ごとの横持ちの2次元配列に変更する方法についてです。
今回は、categoryの値ごとにvalueを集めたいと思います。

 var subjects = [
    {'category':'math','value':'100','name':'AAA'},
    {'category':'math','value':'50','name':'BBB'},
    {'category':'math','value':'70','name':'CCC'},
    {'category':'english','value':'96','name':'AAA'},
    {'category':'english','value':'80','name':'BBB'},
    {'category':'history','value':'70','name':'AAA'},
    {'category':'history','value':'99','name':'BBB'},
];

var subjectMaster = [
    {'category':'math','no':'1'},
    {'category':'english','no':'2'},
    {'category':'history','no':'3'},
];

var sub = {};
var result = [];

subjects.map(function (i,j) {
  var category=i["category"];
  if(typeof sub[category]=="undefined") sub[category]=[];
  sub[category].push(i.value);
});

subjectMaster.forEach(function(v){
   console.log(v);
   result.push(sub[v.category]);
});
console.log(result);

実行結果は次のようになります。
f:id:STSA:20190721194020p:plain