javascript - 如何将对象属性复制到其他对象,然后从数组中删除该对象?
问题描述
如果对象名称相同,我想复制source
属性,然后从数组中删除该对象。我该如何实施?
const data = [
{name: "name1", source: "source1"},
{name: "name1", source: "source2"},
{name: "name2", source: "source3"},
{name: "name3", source: "source4"},
{name: "name4", source: "source5"},
]
预期结果
[
{name: "name1", source: "source1, source2"},
{name: "name2", source: "source3"},
{name: "name3", source: "source4"},
{name: "name4", source: "source5"},
]
解决方案
使用Array.prototype.reduce
,您可以name
按键值对值进行分组,也可以合并source
同一键的name
键值。
const data = [
{name: "name1", source: "source1"},
{name: "name1", source: "source2"},
{name: "name2", source: "source3"},
{name: "name3", source: "source4"},
{name: "name4", source: "source5"},
];
const groupBy = data.reduce((acc, cur) => {
acc[cur.name] ? acc[cur.name].source += `,${cur.source}` : acc[cur.name] = cur;
return acc;
}, {});
const output = Object.values(groupBy);
console.log(output);
推荐阅读
- office365 - 确定与office365的连接是否有效,如果没有连接,则执行某些操作
- html - 导航栏没有使我的链接居中,我不知道如何使用 flexbox
- c# - 建立与 SQL GRAPH API ADO 的连接时发生与网络相关或特定于实例的错误
- python - 返回 None 而不是 False
- google-apps-script - Google 表单中的可填写表格,用于记录特定 Google 表格中的数据
- intellij-idea - 运行 Java 11.02 JavaFX .jar 应用程序会产生奇怪的输出
- c++ - 如何使用快速排序对二维双打向量进行排序?
- java - Netbeans 11.2 的 Build > Compiling 窗格中没有“Additional Compiler Options”
- javascript - Promise All 在第一次 Promise 后卡住
- angular7 - 当我设置延迟加载时,为什么我的 Angular 7 应用程序不会在根路由中呈现任何内容?