如何移除对象中所有数组的重复元素?
批量去除对象中所有数组的重复元素
你可以通过遍历对象的键值对,对每个数组字段复用Set去重逻辑,实现批量处理,下面是两种常用方案:
方案一:生成新的去重对象(不修改原对象)
这种方式不会改动原始数据,适合需要保留原对象的场景:
const originalObj = { "NAME": [ "LORD", "OF", "RINGS", "LORD" ], "ADRESS": [ "INDIA", "INDIA", "TEXAS", "SRILANKA" ] }; const deduplicatedObj = Object.fromEntries( Object.entries(originalObj).map(([key, arr]) => [key, [...new Set(arr)]]) ); console.log(deduplicatedObj);
逻辑说明:
Object.entries(originalObj):将原对象转换为键值对组成的数组,格式为[[键名1, 数组1], [键名2, 数组2], ...].map(...):遍历每个键值对,对数组使用new Set(arr)去重,再通过扩展运算符...转回数组,保留原键名Object.fromEntries(...):将处理后的键值对数组重新转换为对象结构
方案二:直接修改原对象
如果不需要保留原对象,可以直接遍历修改:
const originalObj = { "NAME": [ "LORD", "OF", "RINGS", "LORD" ], "ADRESS": [ "INDIA", "INDIA", "TEXAS", "SRILANKA" ] }; for (const key in originalObj) { // 先判断当前值是否为数组,避免处理非数组字段 if (Array.isArray(originalObj[key])) { originalObj[key] = [...new Set(originalObj[key])]; } } console.log(originalObj);
逻辑说明:
for...in循环遍历对象的所有可枚举键Array.isArray(...)校验当前值是否为数组,防止误处理其他类型的属性- 直接将原数组替换为去重后的新数组
内容的提问来源于stack exchange,提问作者Divakar
相关产品推荐
相关产品推荐

