2016-08-02 21 views
0

を繰り返すことなく、オブジェクトの新しい配列が、私はオブジェクトの配列を考えてみましょうください:キーと値のペア

var myData = [ 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"1", "year":"2012"}, 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"3", "year":"2013"}, 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"5", "year":"2014"}, 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"6", "year":"2015"}, 
{"ccode":"AUS", "cname":"Australia", "figure":"6", "year":"2012"}, 
{"ccode":"AUS", "cname":"Australia", "figure":"5", "year":"2013"}, 
{"ccode":"AUS", "cname":"Australia", "figure":"7", "year":"2014"} 
] 

私は彼らがために取得する方法:

var myNewData = [ 
{"ccode":"AFG", "cname":"Afghanistan", "2012":"1", "2013":"3", "2014":"5", "2015":"6"}, 
{"ccode":"AUS", "cname":"Australia", "2012":"6", "2013":"5", "2014":"7"} 
] 
+0

とあなたがこれまでにしてみてくださいでした –

答えて

1

var myData = [{ 
 
    "ccode": "AFG", 
 
    "cname": "Afghanistan", 
 
    "figure": "1", 
 
    "year": "2012" 
 
}, { 
 
    "ccode": "AFG", 
 
    "cname": "Afghanistan", 
 
    "figure": "3", 
 
    "year": "2013" 
 
}, { 
 
    "ccode": "AFG", 
 
    "cname": "Afghanistan", 
 
    "figure": "5", 
 
    "year": "2014" 
 
}, { 
 
    "ccode": "AFG", 
 
    "cname": "Afghanistan", 
 
    "figure": "6", 
 
    "year": "2015" 
 
}, { 
 
    "ccode": "AUS", 
 
    "cname": "Australia", 
 
    "figure": "6", 
 
    "year": "2012" 
 
}, { 
 
    "ccode": "AUS", 
 
    "cname": "Australia", 
 
    "figure": "5", 
 
    "year": "2013" 
 
}, { 
 
    "ccode": "AUS", 
 
    "cname": "Australia", 
 
    "figure": "7", 
 
    "year": "2014" 
 
}]; 
 

 
var i,len, res = [], obj = {}, obj1 = {}, elem; 
 

 
for (i = 0, len = myData.length; i < len; i += 1) { 
 
    elem = myData[i]; 
 
    if (!(obj1 = obj[elem.ccode])) { 
 
     obj1 = obj[elem.ccode] = { 
 
      ccode: elem.ccode, 
 
      cname: elem.cname 
 
     }; 
 
     res.push(obj1); 
 
    } 
 
    obj1[myData[i].year] = elem.figure; 
 
} 
 

 
console.log(res);

0

Array.prototype.reduce()の1回のパスでこのジョブを実行します。

var myData = [ 
 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"1", "year":"2012"}, 
 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"3", "year":"2013"}, 
 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"5", "year":"2014"}, 
 
{"ccode":"AFG", "cname":"Afghanistan", "figure":"6", "year":"2015"}, 
 
{"ccode":"AUS", "cname":"Australia", "figure":"6", "year":"2012"}, 
 
{"ccode":"AUS", "cname":"Australia", "figure":"5", "year":"2013"}, 
 
{"ccode":"AUS", "cname":"Australia", "figure":"7", "year":"2014"} 
 
], 
 
    newData = myData.reduce((p,c) => { var last = p[p.length-1]; 
 
             return last && last.ccode == c.ccode ? (last[c.year] = c.figure,p) 
 
                      : p.concat({ ccode : c.ccode, 
 
                          cname : c.cname, 
 
                         [c.year] : c.figure}); 
 
            },[]); 
 
console.log(newData);