js另类的数组去重

本文介绍三种JavaScript中实现数组元素去重的方法,包括使用reduce函数、findIndex与splice结合及自定义unique函数,通过实例演示每种方法的具体操作。

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

之前我也在帖子那边发布了一个相同名字的帖子,现在来个正式总结:三种方法,如有雷同,纯属巧合。

let arr = [1,2,3,4,4,1];
let newArr = arr.reduce((pre,cur)=>{
    if(!pre.includes(cur))
      return pre.concat(cur)
    else
      return pre
},[]);console.log(newArr);// [1, 2, 3, 4]

arr=[1,2,3,4,1,3,5,7,89,45,23,1]
function unique(arr){
	for(var i=0,l=arr.length;i<l;i++)
		for(var _=arr.findIndex((v,l)=>v===arr[i]&&l>i);_>-1;_=arr.findIndex((v,l)=>v===arr[i]&&l>=_))
			arr.splice(_,1);
	return arr
};console.log(unique(arr));// [1, 2, 3, 4, 5, 7, 89, 45, 23]
//稍作修改,无需判断_<arr.length
arr=[1,2,3,4,1,3,5,7,89,45,23,1]
Array.prototype.unique=function(){
var r = [], obj = {};
for (var i=0,l=this.length; i<l; i++) {
		var item=this[i];
		if (!obj[item]) {
			r.push(item);obj[item] = 1; 
		} 
	} 
	return r;
};console.log(arr.unique());// [1, 2, 3, 4, 5, 7, 89, 45, 23]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值