数组去重,寻找水仙花数

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]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值