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);
}