You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除对象中所有数组的重复元素?

批量去除对象中所有数组的重复元素

你可以通过遍历对象的键值对,对每个数组字段复用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);

逻辑说明:

  1. Object.entries(originalObj):将原对象转换为键值对组成的数组,格式为[[键名1, 数组1], [键名2, 数组2], ...]
  2. .map(...):遍历每个键值对,对数组使用new Set(arr)去重,再通过扩展运算符...转回数组,保留原键名
  3. 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);

逻辑说明:

  1. for...in循环遍历对象的所有可枚举键
  2. Array.isArray(...)校验当前值是否为数组,防止误处理其他类型的属性
  3. 直接将原数组替换为去重后的新数组

内容的提问来源于stack exchange,提问作者Divakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:01:40