javascript - 删除对象数组中的重复对象,同时保留唯一的字符串值
问题描述
请多多包涵,我是一个新手 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);
推荐阅读
- cypress - 赛普拉斯工具与从终端运行它们之间是否存在不一致?
- regex - 如何在正则表达式匹配中也获取字符串的其余部分?
- sql - 在 PLSQL 中使用命名空间解析嵌套 XML
- git - 不需要接受提交以开发具有特定名称模式的分支
- python - 如何将鼠标按钮选择存储在列表中?
- java - 如何停止使用任务计划程序启动的进程
- python-3.x - 偶尔会弹出 StaleElementReferenceException 错误的问题
- python - Openpyxl将非空单元格读取为无
- javascript - 强制 RBAC 对 React 组件
- android-studio - 我无法在 android studio 上运行第一个应用程序