从数组中返回奇数或偶数

时间:2017-08-13 18:30:45

标签: javascript arrays loops

需要帮助确定我在这场代码战挑战中做错了什么。

我意识到这对某些人来说可能很容易,但请注意我只是一个Javascript初学者。

挑战:

  

给你一个数组(长度至少为3,但是   可能非常大)包含整数。阵列完全是   由奇数整数组成或完全由偶数整数组成   除了一个整数N.编写一个将数组作为的方法   参数并返回N。

例如:

[2, 4, 0, 100, 4, 11, 2602, 36]应该返回11

[160, 3, 1719, 19, 11, 13, -21]应该返回160

我的代码:

function findOutlier(integers){

    var even = [];
    var odd = [];

  for (var i = 0; i < integers; i++) {
    if (integers[i] % 2 === 0) {
        even.push(integers[i]);
    } else {
        odd.push(integers[i]);
    }

    if (even.length === 1) {
        return even;
    } else {
        return odd;
    }
  }
}

5 个答案:

答案 0 :(得分:1)

另一种可能的方式:

function myFunction(integers) {
  var odds = integers.filter(function(num) {return num % 2});
  var evens = integers.filter(function(num) {return !(num % 2)});
  return evens.length == 1 ? evens[0] : odds[0];
}

您可以查看此 CodePen Demo 以在Mocha中测试该功能。

答案 1 :(得分:0)

我在您的代码块中发现了2个问题。您必须在数组长度上运行循环而不是整个数组,否则您可以使用foreach循环。完成循环后,您需要返回奇数/偶数值。请按照以下方式检查更新的代码,希望它能帮助您。

function findOutlier(integers){

    var even = [];
    var odd = [];

    for (var i = 0; i < integers.length; i++) {
        if (integers[i] % 2 === 0) {
            even.push(integers[i]);
        } else {
            odd.push(integers[i]);
        }
    }
    if (even.length === 1) {
        console.log("OK..1");
        return even;
    } else {
        console.log("OK..2");
        return odd;
    }
}

答案 2 :(得分:0)

尝试:         for(var i = 0; i&lt; integers.length; i ++)

代替:         for(var i = 0; i&lt; integers; i ++)

答案 3 :(得分:0)

如果您希望第一次出现而不迭代到最后一项而不使用命令式代码,则可以使用.find()检查内部n的最右边位是否为1; < / p>

&#13;
&#13;
var arr     = [2, 4, 0, 100, 4, 11, 2602, 36],
    resodd  = arr.find(n => n & 1),
    reseven = arr.find(n => !(n & 1));

console.log(resodd, reseven);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

将奇数和偶数结果推入数组,然后比较剩下的内容

function findOutlier(integers) {
  var arrO=[];
 var arrE=[];
    for(i=0; i<integers.length; i++){
if(integers[i] % 2==0 ){
arrE.push(integers[i])
}
  else {
arrO.push(integers[i])
    }
    }
    if(arrO.length > arrE.length){
  return arrE[0]
    }return arrO[0]
   }