假设我有一个对象数组:
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"}
]
最佳答案
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);
关于javascript - 创建一个新的对象数组,不重复键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709999/