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