找一個陣列中特別的數

wangxiaojin發表於2018-08-22

在一個陣列中大部分都是奇數(或偶數),只有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];
}



複製程式碼

相關文章