定义let objOne = {a: 1}; let objTwo = {b: 2}; let objThree = {b: 2, c: 3};使用ES6的两种方法实现对象的去重合并
时间: 2024-05-15 12:17:28 浏览: 203
你可以使用ES6中的对象展开和Set集合来实现对象的去重合并,具体的实现方式如下:
方法一:
```
let objOne = {a: 1};
let objTwo = {b: 2};
let objThree = {b: 2, c: 3};
const mergedObj = {...objOne, ...objTwo, ...objThree};
// {...}语法可以将多个对象合并成一个新的对象,重复的属性会被覆盖
const uniqueObj = Object.fromEntries(
Object.entries(mergedObj).filter(([key, value], index, self) =>
// 使用Set集合去重,注意数组解构时的参数顺序
self.findIndex(([k, v]) => k === key && v === value) === index
)
);
// 通过Object.entries()将对象转换为键值对数组,再通过filter()方法筛选出不重复的键值对,最后通过Object.fromEntries()将筛选后的键值对数组转换为对象
console.log(uniqueObj) // {a: 1, b: 2, c:3}
```
方法二:
```
let objOne = {a: 1};
let objTwo = {b: 2};
let objThree = {b: 2, c: 3};
const mergedObj = Object.assign({}, objOne, objTwo, objThree);
// 使用Object.assign()方法将多个对象合并成一个新的对象,重复的属性会被覆盖
const uniqueKeys = [...new Set(Object.keys(mergedObj))];
// 使用Set集合去重,然后通过展开运算符 [...] 将集合转换为数组
const uniqueObj = uniqueKeys.reduce((acc, key) => {
acc[key] = mergedObj[key]; // 只保留不重复的属性
return acc;
}, {});
console.log(uniqueObj) // {a: 1, b: 2, c:3}
```
希望以上解答对你有所帮助。如果你还有其他问题欢迎继续提问。
阅读全文