javascript - 创建一个新的对象数组,不重复键值对

标签 javascript arrays javascript-objects

假设我有一个对象数组:

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/

相关文章:

javascript - jQuery 查找具有类的 span 并隐藏几个父级的 div

javascript - 从选项页面中调用 Chrome 扩展方法?

Javascript检查表格中的上升趋势

c - 如何用前 10 个质数填充数组?

c# - 如何创建消除重复代码的函数

javascript - 将带有数字键的 JavaScript 对象转换为数组

javascript - 我的解决方案连接数组元素有什么问题?

javascript - 在js文件中加载html文件

javascript - 使用 JavaScript 创建动态 HTML 表单

javascript - 了解创建 JavaScript 对象的不同方式