javaScript-----一维数组和数组对象去重的多种方法

在JavaScript中,可以使用多种方法对一维数组和数组对象进行去重。以下是一些常见的方法:

一维数组去重

1. 使用 Set

Set 只允许唯一值,可以直接用于一维数组的去重。

复制代码
const arr = [1, 2, 3, 1, 2];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3]
2. 使用 filterindexOf

通过 filter 方法配合 indexOf 来去重。

复制代码
const arr = [1, 2, 3, 1, 2];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3]
3. 使用 reduce

利用 reduce 方法进行去重。

复制代码
const arr = [1, 2, 3, 1, 2];
const uniqueArr = arr.reduce((acc, current) => {
    if (!acc.includes(current)) {
        acc.push(current);
    }
    return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3]
4. 使用对象属性作为键

通过一个对象记录已存在的值,实现去重。

复制代码
const arr = [1, 2, 3, 1, 2];
const map = {};
const uniqueArr = arr.filter(item => {
    if (!map[item]) {
        map[item] = true;
        return true;
    }
    return false;
});
console.log(uniqueArr); // [1, 2, 3]

数组对象去重

1. 使用 SetJSON.stringify

利用 Set 的特性,结合 JSON.stringify 进行去重。

复制代码
const arr = [{ id: 1 }, { id: 2 }, { id: 1 }];
const uniqueArr = Array.from(new Set(arr.map(a => JSON.stringify(a)))).map(e => JSON.parse(e));
console.log(uniqueArr); // [{ id: 1 }, { id: 2 }]
2. 使用 filterfindIndex

通过 filter 方法配合 findIndex 来去重。

复制代码
const arr = [{ id: 1 }, { id: 2 }, { id: 1 }];
const uniqueArr = arr.filter((item, index) => 
    arr.findIndex(obj => JSON.stringify(obj) === JSON.stringify(item)) === index
);
console.log(uniqueArr); // [{ id: 1 }, { id: 2 }]
3. 使用 reduce

利用 reduce 方法进行去重。

复制代码
const arr = [{ id: 1 }, { id: 2 }, { id: 1 }];
const uniqueArr = arr.reduce((acc, current) => {
    const x = acc.find(item => JSON.stringify(item) === JSON.stringify(current));
    if (!x) {
        return acc.concat([current]);
    } else {
        return acc;
    }
}, []);
console.log(uniqueArr); // [{ id: 1 }, { id: 2 }]
相关推荐
源图客2 小时前
Claude Code基础使用
服务器·前端·数据库
布朗克1682 小时前
Go 入门到精通-09-复合类型之Map
开发语言·后端·golang·map
zh_xuan2 小时前
c++ Expected用法
开发语言·c++·expected
ch.ju2 小时前
Java程序设计(第3版)第四章——final修饰的方法和类
java·开发语言
asdzx672 小时前
在 React 中轻松实现 PDF 转 Word:纯前端 WASM 方案实战
前端·react.js·pdf
极***技2 小时前
2026云原生核心!Go高并发限流实战,从原理到落地
开发语言·云原生·golang
牛大了20233 小时前
场景题:数据迁移解决方案
开发语言
爱勇宝11 小时前
第 1 章:别把“需求文档”当成真正的需求
前端·后端·程序员
认真的酒窝11 小时前
自己动手开发编译器(十一)语义分析
java·开发语言
梨子同志11 小时前
常用命令
前端