javascript - 连接同名的json条目

标签 javascript java arrays json

我目前正在尝试学习 javascript 的基础知识并使用 JSON。

我有一个 JSON 文件,我想将同名的导入合并到一个条目中。这怎么可能?

原始 JSON

[{
    "name": "1.date.17-Nov-18",
    "size": 1000,
    "imports": ["1.location.HOUSTON", "1.person.JOHN"]
},
{
    "name": "1.date.17-Nov-18",
    "size": 1000,
    "imports": ["1.location.MIAMI", "1.person.BEN", "1.person.JOHN"]
},
{
    "name": "1.date.18-Nov-18",
    "size": 1000,
    "imports": ["1.location.UBER", "1.person.JOHN"]
}
]

预期输出

[{
    "name": "1.date.17-Nov-18",
    "size": 1000,
    "imports": ["1.location.HOUSTON", "1.person.JOHN", "1.location.MIAMI", "1.person.BEN"]
},
{
    "name": "1.date.18-Nov-18",
    "size": 1000,
    "imports": ["1.location.UBER", "1.person.JOHN"]
}
]

任何提示和建议将不胜感激。非常感谢。

最佳答案

使用对象来跟踪名称,我们使用 forEach 遍历数据数组。

然后我们检查 itemname 之前是否传过。如果已通过,我们将它们的 imports 合并在一起。如果不是,我们将项目添加到对象中。

为了防止重复 imports,我们使用 Set这可以防止重复元素,然后我们使用扩展 ... 运算符将其转换回数组

然后我们使用 Object.values 返回合并后的数据,没有 names 作为键

const result = {};
const data = [{"name":"1.date.17-Nov-18","size":1000,"imports":["1.location.HOUSTON","1.person.JOHN"]},{"name":"1.date.17-Nov-18","size":1000,"imports":["1.location.MIAMI","1.person.BEN","1.person.JOHN"]},{"name":"1.date.18-Nov-18","size":1000,"imports":["1.location.UBER","1.person.JOHN"]}];

data.forEach(item => {
  if (item.name in result) result[item.name].imports = [...new Set([...item.imports, ...result[item.name].imports])];
  else result[item.name] = item;
});

console.log(Object.values(result));

关于javascript - 连接同名的json条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67031722/

相关文章:

Javascript - 在自身内部克隆数组

javascript - 如何删除双网格线并强制 y 到原点

javascript - 什么时候应该使用 jQuery 的 document.ready 函数?

javascript - HTML, CSS, JavaScript

JavaScript:提交后在表单下显示元素

java - 关于设置闹钟的非常奇怪的问题

java - 正则表达式在字符串中查找价格

java - 什么是非法反射访问?

c - 尽管在这两种情况下,编译器在编译期间都不知道 n ,但编译器的工作在这两种情况下有何不同?

java - C:将二维 double 组转换为java二维 double 组