从json数组中删除重复项并使用node.js组合其id

时间:2014-01-07 05:27:06

标签: javascript jquery json node.js

在下面的代码中newData打印如下

var newData =(JSON.parse(jobData));
console.log(newData);

目前它包含5个值。可能会有变化

[{
    mode: daily,
    id: '71'
    os: 'Win37'
}, {
    mode: daily,
    id: '45'
    os: 'Win37-1'
}, {
    mode: daily,
    id: '37'
    os: 'Win64'
}, {
    mode: daily,
    id: '86'
    os: 'Win37'
},{
    mode: daily,
    id: '7'
    os: 'Win64' ];

从上面的json数组我必须创建这样的数组怎么可能? 即使用不同的os创建相同的'Win37' id。如果存在重复的os,则将其ids组合如下

MynewArray = [{
    mode: daily,
    id: '71,86'
    os: 'Win37'
 }, {
    mode: daily,
    id: '45'
    os: 'Win37-1'
 }, {
    mode: daily,
    id: '37,7'
    os: 'Win64'
 }];

1 个答案:

答案 0 :(得分:1)

您的代码中存在语法错误,缺少,mode值的引号,修复错误后,您可以尝试以下neu数组的id属性是数组,o这里指的是原始数组。

var neu = [], l = o.length;

for (var i = 0; i < l; i++) {
    var f = neu.filter(function(e, _) {
       return e.os === o[i].os;
    });   
    if (f.length) {
        f[0].id.push(o[i].id);
    } else {
        neu.push({
            os: o[i].os,
            id: [o[i].id],
            mode: o[i].mode
        });
    }
} 

jsFiddle