前端笔试题——数组去重的几种实现方法

1. ES6中的new Set()方法

function dRemoval(arr){
	return Array.from(new Set(arr));
}

Set是ES6中一种新的数据类型,类似于数组,但是其成员都是唯一的,没有重复值。
通过new Set()将数组转化为没有重复值的Set类型;然后通过Array.from将Set类型转回数组类型。

2. indexOf()方法

function dRemoval(arr){
	let newArr = [];
	for (let i in arr){
		if(newArr.indexOf(arr[i]) === -1){
			newArr.push(arr[i]);
		}
	}
	return newArr;
}

对原数组进行遍历,若新数组找不到原数组的成员,则indexOf()方法的值为-1,接着用push将其加入新的数组中。
3. filter()方法

function dRemoval(arr){
	let newArr = arr.filter((item, index, arr)=>
arr.indexOf(item) === index);
	return newArr;
}

filter()是数组的遍历方法,参数为一个函数,返回一个参数函数返回值为true的成员组成的数组。即只有原数组中的成员满足arr.indexOf(item) === index才将其加入到新的数组中。
4. includes()方法

function duRemoval(arr){
	let newArr = [];
	for (let i = 0; i < arr.length; i++) {
		if (! newArr.includes(arr[i])){
			newArr.push(arr[i]);
		}
	}
	return newArr;
}	

类似indexOf()方法,只是通过数组的includes()方法判断成员是否在新数组中存在。
5. 双重遍历方法

function duplicateRemoval4(arr){
	for (let i = 0; i < arr.length; i++) {
		for (let j = i+1; j < arr.length; j++) {
			if(arr[i] === arr[j]){
				arr.splice(j, 1);
				j--;
			}
		}
	}
	return arr;
}

遍历数组,若找到与前面的元素相同的元素,则通过splice()方法删除该元素,知道所有的元素都比较完毕。
注意在删除一个元素后,循环的下一个元素索引值会减一,即需要j–;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值