【问题标题】:remove duplicates from json array and combine its id's using node.js从 json 数组中删除重复项并使用 node.js 组合其 id
【发布时间】:2014-01-24 17:12:57
【问题描述】:

以下代码中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'
 }];

【问题讨论】:

  • 我不知道如何创建这个..:-(\
  • 你不能创建这样的东西:{id: '71','86'},这只是一个语法错误。
  • 那么id :'71,86'??有可能吗?
  • 是的,这是可能的,或者{id: ['71','86']}
  • 是的,喜欢id :'71,86'

标签: javascript jquery json node.js


【解决方案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

【讨论】:

  • 还有一个疑问是什么下划线`var f = neu.filter(function(e, _) {`
  • @Sush 这是索引,_ 是一个有效的变量名。
猜你喜欢
  • 1970-01-01
  • 2016-01-05
  • 2020-04-28
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2014-07-22
  • 1970-01-01
相关资源
最近更新 更多