javascript - 删除对象数组中的重复对象,同时保留唯一的字符串值

标签 javascript arrays string sorting javascript-objects

请耐心等待,我是一名新手 javascript 开发人员,有一个我无法解决的排序问题。

我正在通过这样的 api 检索对象数组(JSON 响应):

var arr = [
    {
        "year": "2011",
        "activity": "bowling"
    },
    {
        "year": "2009",
        "activity": "shopping",
    },
    {
        "year": "2011",
        "activity": "cooking"
    },
    {
        "year": "2006",
        "activity": "singing"
    }
]

我有一个函数可以删除所有重复的年份(如预期的那样),但我希望获取重复对象的“事件”值并将其添加到删除重复项后留下的同一年的事件值

我的去掉重复年份的函数如下

var new_arr = new_arr.reduce((unique, o) => {
  if(!unique.some(obj => obj.year === o.year)) {
    unique.push(o);
  }
  return unique;
},[]);

这给我留下了这个

var arr = [
    {
        "year": "2011",
        "activity": "bowling"
    },
    {
        "year": "2009",
        "activity": "shopping",
    },
    {
        "year": "2006",
        "activity": "singing"
    }
]

我希望完成的事情:

var arr = [
    {
        "year": "2011",
        "activity": "bowling, cooking"
    },
    {
        "year": "2009",
        "activity": "shopping",
    },
    {
        "year": "2006",
        "activity": "singing"
    }
]

JSFiddle:https://jsfiddle.net/4s1uaex0/2/

我觉得我快到了,但我不知道从哪里开始。任何人都可以通过指南或示例为我指明正确的方向吗?帮助将不胜感激!谢谢

最佳答案

你可以简单地使用for循环

    var mem = {};
    for(var i = 0; i < arr.length; i++) {
        var currentItem = arr[i];
        var year = currentItem['year'];
        var activity =  currentItem['activity'];
        if(!mem.hasOwnProperty(year)) {
            mem[year] = { 'year' : year, "activity": []};
        }
        mem[year]['activity'].push(activity);
    }

    var final = Object.values(mem);

关于javascript - 删除对象数组中的重复对象,同时保留唯一的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52984615/

相关文章:

javascript - CKEDITOR.replace() 未定义

javascript - 我需要在 "//callback code"处填写什么才能使 Mailcheck 正常工作? (jquery 用法)

c - 如何找到所有其他对中值差异最大的对的数量?

python - 按位置将函数数组应用于元素数组

javascript - 生成器未定义

string - 为什么将 & 应用于字符串会返回 &str?

javascript - d3.selectAll().data(myDataSet).enter().append ("rect") 正在选择先前创建的矩形而不是 myDataSet

javascript - REST 连接/资源检索混合。使用哪个 Controller ?

python - 如何将此字符串转换为 python 列表?

string - 覆盖子中的(字符串)元素列表