js 数组去重

第一种:先sort排序后去重

const arr = [1,2,3,4,3,21,2];
arr.sort(function(a,b){
	return a-b; // 数组按从小到大排序(PS:从大到小也行)
})
const newArr = [];
for(var i = 0;i<arr.length;i++){
	if(arr[i] != arr[i+1]){
		newArr.push(arr[i]); // 比较当前数值arr[i]与下一个数值arr[i+1]是否相等,不相等才进行push操作
	}
}
console.log(newArr) // [1, 2, 3, 4, 21]

第二种:使用filter函数

const arr = [1,2,3,4,3,21,2];
const newArr = arr.filter(function(item,index,Array){
	return Array.indexOf(item) === index; //判断indexOf获得的下标和当前的数值的下标是否相等
})
console.log(newArr); // [1, 2, 3, 4, 21]
//或
const arr = [1,2,3,4,3,21,2];
const newArr = arr.filter(function(item,index,arr){
	return arr.lastIndexOf(item) === index;//判断lastIndexOf获得的下标和当前的数值的下标是否相等
})
console.log(newArr); // [1, 4, 3, 21, 2]

**注:**indexOf 和 lastIndexOf均能实现效果,区别在于:执行的方向不一样,indexOf从左到右搜索,而lastIndexOf相反

第三种:使用includes方法

const arr = [1,2,3,4,3,21,2];
const newArr = [];
   for(let i=0; i<arr.length; i++){
	if(!newArr.includes(arr[i])){
		newArr.push(arr[i]);
	}
   }
console.log(newArr);

第四种:使用Set函数

const arr = [1,2,3,4,3,21,2];
const newArr = Array.from(new Set(arr));
console.log(newArr); // [1, 2, 3, 4, 21]
//或使用Set和扩展运算符
const arr = [1,2,3,4,3,21,2];
const newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3, 4, 21]

第五种

const arr = [1,2,3,4,3,21,2];
const temp = {}
arr.forEach(item => temp[item] = item);
const newArr = Object.values(temp)
console.log(newArr); // [1, 2, 3, 4, 21]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值