我目前正在尝试学习 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
遍历数据数组。
然后我们检查 item
的 name
之前是否传过。如果已通过,我们将它们的 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/