codewars(二)

今天是体验codewars的第二天,今天开始研究了一下大佬们的代码,emm,for循环是恶魔吧,我要换换换~!!

今天的题目:

//您将获得一个包含整数的数组(其长度至少为3,但可能非常大)。除了单个整数之外,该数组要么完全由奇数整数组成,要么完全由偶数整数组成N。编写一个方法,将数组作为参数并返回此“异常值”
N。 // You are given an array (which will have a length of at least
3, but could be very large) containing integers. The array is either
entirely comprised of odd integers or entirely comprised of even
integers except for a single integer N. Write a method that takes the
array as an argument and returns this “outlier” N.

emm,
(1)数组作为一个参数,并且长度大于3 先判断是否大于3
(2) 判断奇数/偶数输出不属于一类的数字,并且存入到数组中 作为返回值输出
(3) 判断奇数和偶数 然后比较长度 进行输出
这是我的想法,最开始的想法,后来,发现看错题目了,,只要输出一个数字就好,注意,是数字。。这就是第一次提交没过的原因啊~
第一次代码:

 function findOutlier(integers){
        var arrBlock1 =[];
        var arrBlock2 =[];
        if(integers.length>2){
            for(var i=0;i<integers.length;i++){
                if(integers[i] % 2 ===0){
                    arrBlock1.push(integers[i]);
                }else {
                    arrBlock2.push(integers[i]);
                }
            }
            integers=parseInt(arrBlock1.length<arrBlock2.length?arrBlock1:arrBlock2);
        }
        return integers;
    }

代码已经发现了我的菜。。

第二次代码(ps:看过大佬代码的思路):
用filter才是王道。。。

 function findOutlier1(integers) {
        return integers.slice(0, 3).filter(even).length >= 2 ? integers.find(odd) : integers.find(even)
    }
    const even = (num) => {
        return (num % 2 === 0)
    }
    const odd = (num) => {
        return (num % 2 !== 0)
    }

得票最高的代码:

function findOutlier(int){
  var even = int.filter(a=>a%2==0);
  var odd = int.filter(a=>a%2!==0);
  return even.length==1? even[0] : odd[0];
}

嘻嘻 其实差不多啦,继续加油啦~~

发布了35 篇原创文章 · 获赞 2 · 访问量 9838

猜你喜欢

转载自blog.csdn.net/qq_39532595/article/details/85333235