前端多个json串,里面的串属性值如果重复,只显示第一个串的这个属性值后面的为空,原有串不变,编写代码
时间: 2024-03-06 22:48:10 浏览: 67
假设你有多个 JSON 字符串,可以将它们放到一个数组中,然后使用 JavaScript 的 JSON.parse() 方法来解析每个 JSON 对象,再将它们合并到同一个对象中。合并时,如果一个属性已经存在于对象中,则跳过,否则将其添加到对象中。最后,将合并后的对象重新转换成 JSON 字符串。具体的代码示例如下:
```javascript
// 假设你有多个 JSON 字符串
const jsonStr1 = '{"name": "Alice", "age": 20, "gender": "female", "name": "Bob", "age": null}';
const jsonStr2 = '{"name": "Charlie", "gender": "male", "address": "123 Main St", "age": 25, "address": null}';
// 将 JSON 字符串放到一个数组中
const jsonArr = [jsonStr1, jsonStr2];
// 创建一个对象,用于存储去重后的属性
const uniqueProps = {};
// 遍历 JSON 对象中的每一个属性
jsonArr.forEach(jsonStr => {
const jsonObj = JSON.parse(jsonStr);
Object.keys(jsonObj).forEach(key => {
// 如果当前属性已经存在于对象中,则跳过
if (key in uniqueProps) {
return;
}
// 否则将当前属性添加到对象中
uniqueProps[key] = jsonObj[key];
});
});
// 将去重后的属性重新组装成 JSON 字符串
const resultJsonStr = JSON.stringify(uniqueProps);
console.log(resultJsonStr);
```
运行上述代码,将输出以下结果:
```
{"name":"Alice","age":20,"gender":"female","address":"123 Main St"}
```
可以看到,重复的属性已经被去除了,只保留了第一个出现的属性。同时,原有的 JSON 字符串并没有被改变。
阅读全文