找出数组中没有重复的数

javaScript找出数组不重复的数

有这样一个数组 arr = [1,1,2,2,3,4,5,6,6],怎么找出3、4、5 ?

// 1.使用indexOf和lastIndexOf
function find(arr){
	return arr.filter((item,index)=>{
		return arr.indexOf(item) === arr.lastIndexOf(item)
	})
}
// 2.使用map集合记录出现的次数
function find(arr){
	let map = new Map();
	for(let key of arr){
		if(map.has(key)){
			map.set(key,map.get(key)+1)
		}else{
			map.set(key,1)
		}
	}
	
	let arr2 = []
	map.forEach((val,key)=>{
		if(val === 1){
			arr2.push(key)
		}
	})
	return arr2
}

有一个数组arr = [1,1,2,2,3,4,4,5,6,5,6],该数组中只有一位数字只出现了一次,其他的数字都出现偶数次,请问怎么找到只出现一次的数字。因为异或有一个特点,a^a = 0; a^0 = a,所以出现了两次的异或之后都为0,然后0跟另一个数异或还是另一个数。所以使用数组的累加器配合异或操做就可以找出只出现了一次的数字

//使用异或,a^a = 0; a^0 = a
function find(arr) {
	return arr.reduce((a, b) => a ^ b);
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值