js数组去重

本文介绍了几种常见的数组去重方法,包括使用JQuery、lodash、underscore等框架提供的工具函数,以及利用JavaScript原生方法如forEach、filter实现的自定义去重逻辑。此外还探讨了如何借助ES6的Set数据结构来简化数组去重过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接

数组的去重在日常的开发中经常碰到的需求,虽然我们真实开发过程中会有lodash,Jquery等框架帮助我们。但是,很多时候我们也需要自己来实现这个简单的功能

框架
var arr = [1, 2, 3, 4, 5, 5, 5, 5];

// Jquery
$.unique(arr);

// lodash
_.uniq(arr);

// underscore
_.uniq(arr);
方法-
var arr = [1, 2, 3, 4, 5, 5, 5, 5];
var res = [];
arr.forEach((d) => {
  if(res.indexOf(d) === -1) {
    res.push(d)
  }
});
方法二
var arr = [1, 2, 3, 4, 5, 5, 5, 5];
var res = arr.filter((d, i) => {
  return arr.indexOf(d) === i;
})
方法三

如果你的数组里面都是字符串类型,那么可以使用对象KEY的唯一性来实现数组的去重

var arr = ['a', 'b', 'c' , 'a', 'c', 'd'];
var resObject = {};
arr.forEach((d) => {
  resObject[d] = (resObject[d] || 1) + 1;
});
var res = Object.keys(resObject);

因为Object的键值必须要是字符串,所以当数组里面有数字,undefinedbool等类型时,就没有作用了,但是这个方法不但可以对字符串数组去重,同时也可以统计每个字符串出现的次数

方法四

当我们在往数组里面push的时候,如果数组本身就可以保持不重复就好了,在ES5中我们没有办法做到,但是在ES6中,我们有了一个新的数据结构Set

set并不是一个新的数据类型,是属于js基本类型的Object类型下面的

关于set的说明MDN有如下说明

The Set object lets you store unique values of any type, whether primitive values or object references.

这正是我们需要的,而且set还可以根传入数组来初始化,而set也可以很方便的转回数组

let arr = ['a', 'b', 'c' , 'a', 'c', 'd'];
let res = Array.from(new Set(arr));

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值