在一个数组中大部分都是奇数(或偶数),只有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];}复制代码