javascript - 按相同键值合并对象数组
问题描述
我有一个像这样的对象数组:
[
{
"name": "Blah",
"description": "This is a description"
},
{
"name": "Foo",
"description": "This is a description"
},
{
"name": "Bar",
"description": "This is a description"
},
{
"name": "Blah",
"description": "This is a description"
},
{
"name": "Test",
"description": "This is a description"
}
]
我想运行某种函数来将具有相同名称的对象组合成一个description1 + "\n" + description2
模式,所以最终结果是:
[
{
"name": "Foo",
"description": "This is a description"
},
{
"name": "Bar",
"description": "This is a description"
},
{
"name": "Blah",
"description": "This is a description\nThis is a description"
},
{
"name": "Test",
"description": "This is a description"
}
]
不需要保留数组的顺序。任何帮助,将不胜感激。谢谢!
解决方案
您可以使用查找对象来查找重复项:
const result = [], hash = {};
for(const {name, description} of input) {
if(hash[name]) {
hash[name].description += "\n" + description;
} else {
result.push(hash[name] = { name, description });
}
}
推荐阅读
- node.js - Get the version number of an installed Node package without loading it?
- pagespeed-insights - 是什么导致'FAILED_DOCUMENT_REQUEST。Lighthouse 无法可靠地加载页面'
- endianness - 为了在 libcrypto 中与 CryptoAPI 兼容的签名,更改 PEM 编码的私钥/公钥对的字节序
- ansible - 包含和修改后自动将变量保存回文件中
- android - 必须使用 RxJava Observable 订阅
- android - 最后如何在Horizontal RecyclerView中显示部分项目以指示滚动?
- android - 如何在安卓中为浏览器应用添加谷歌搜索建议?
- vue.js - Vue v-for 和 v-if
- arm64 - ARM64:LDR(寄存器)SXTX 扩展
- java - 登录后spring boot entityManagerFactory初始化