找一个数组中特别的数

190 阅读1分钟

在一个数组中大部分都是奇数(或偶数),只有1个可能是偶数(或奇数),写一个函数special找到这个不一样的值。 special( [2, 4, 0, 100, 4, 11, 2602, 36] ) // 11 唯一的奇数 special( [160, 3, 1719, 19, 11, 13, -21] ) // 160 唯一的偶数

function special(ary){
    let one=ary[0]%2;
    let two=ary[1]%2;
    let three=ary[2]%2;
    let flag=0//代表默认是偶数;
    if(one==two||one==three){
        //走到这个里面的时候,说明找到的跟one相反
       // one的值是0||`1`
       if(one==0) flag=1
       else flag=0
       return ary.filter(item=>{
         return item%2==flag
       })[0]
    }else{
       //说明one 就是那个特别不同的
       return ary[0]
       
    }
 
   }

  console.log(special( [160, 3, 1719, 19, 11, 13, -21] )) 
   




简化方法:


function sepcile(ary){
    let ary1=ary.filter(item=>item%2==0);
    let ary2=ary.filter(item=>item%2==1);
    return ary1.length>1?ary2[0]:ary1[0];
}