javascript - 如何操作数组对象并创建新数组

标签 javascript arrays

我有 js 数组,如下所示:

var names = [{name:"high",id:1},{name:"high",id:2}, 
{name:"low",id:1},  {name:"low",id:2},{name:"medium",id:1},{name:"medium",id:2}];

我需要像这样创建另一个数组。

var newArr=[{name:high,items:[1,2]},{name:low,items:[1,2]},{name:medium,items:[1,2]}];

请建议我如何做到这一点。

最佳答案

Underscorejs基于解决方案

var obj = {};

_.each(names, function (e) {
    var o = obj[e.name];
    if (o) {
        o.items.push(e.id);
    } else {
        o = {name: e.name, items: [e.id]};
    }
    obj[e.name] = o;
});

var result = _.map(obj, function (e) {return e;});

纯js

var obj = {};
for (var i = 0; i < names.length; i++) {
    var e = names[i];
    var o = obj[e.name];
    if (o) {
        o.items.push(e.id);
    } else {
        o = {name: e.name, items: [e.id]};
    }
    obj[e.name] = o;
}
var result = [];
for (var k in obj) {
    if (obj.hasOwnProperty(k)) {
        result.push(obj[k]);
    }
};

关于javascript - 如何操作数组对象并创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25848056/

相关文章:

javascript - 谷歌地图 JS API : Better to store data in markers or in JSON?

javascript - onblur 事件触发警报。完全菜鸟

javascript - 拼接后更新 JSON 文件

php - 如果重复则更改数组值

c# - 如何交织两个字符串或数组,可能与 String.Join()

python - Numpy 数组 : group by one column, 求和另一个

javascript - 通过 jQuery 访问 DOM 元素

javascript - 然后似乎在异步返回值之前触发

javascript - 获取点击后打开新页面的url

arrays - 使用 Swift 从 NSData 解析 JSON