1.通过forEach实现数组去重
var arr=[1,2,3,3,2,1,4,2,3,'q','w','q'];
var obj={}
arr.forEach( (value,index)=>{//通过forEach实现
obj[value]=arr[index];
})
console.log(Object.keys(obj))
// [1, 2, 3, 4, 'q', 'w'] Object.keys遍历对象返回对象每一项的key,数组形式
2.使用filter实现数组去重
var newArr=arr.filter((val,index,array)=>{//使用filter
return index==array.indexOf(val)
})
//console.log(newArr)// [1, 2, 3, 4, 'q', 'w']
3.使用new Set实现数组去重
var newArr1=[...new Set(arr)]//使用new Set
//console.log(newArr1)//[1, 2, 3, 4, 'q', 'w']
4.使用reduce实现数组去重
var newArr2=arr.reduce((map,item)=>{//使用reduce
map[item]=0;
return map
},{})
console.log(Object.keys(newArr2))//[1, 2, 3, 4, 'q', 'w']
扩展:找出100-1000之间的水仙花数
//水仙花数指的是一个三位数的每一位数的三次幂相加等于本身,如153,1x1x1+5x5x5+3x3x3=153
function getNarcissisticNumber(arr){
//用来接收arr中为水仙花数的元素
var newArr=[]
//百位
var hundred=0;
//十位
var ten=0;
//个位
var bits=0;
//每一位数的三次幂之和
var num=0;
for(var i=0;i<arr.length;i++){
hundred=parseInt(arr[i]/100);
ten=parseInt((arr[i]-hundred*100)/10);
bits=arr[i]%10;
num=hundred*hundred*hundred+ten*ten*ten+bits*bits*bits
//判断num是否为水仙花数
if(num==arr[i]){
newArr.push(arr[i])
}
}
return newArr;
}
function fun(){
var arrList=[]
for(var j=100;j<1000;j++){
arrList.push(j)
}
return arrList;
};
var arrFun=fun();
console.log(getNarcissisticNumber(arrFun));
//[153, 370, 371, 407]