找出给定数字中的哪个不同于其他Javascript

0 javascript indexing split for-loop

我正在尝试解决此问题。有一串数字,程序会在给定的数字中找到一个均匀度不同的数字,并返回该数字的位置。该元素必须通过其索引返回(数字是该数字所在的实际位置)。如果它的索引为0,则必须将其返回为1。到目前为止,我已经这样做了,但是它没有通过一项测试。我不太清楚为什么会这样,因为感觉应该如此。有人能看到错误是什么吗?任何帮助表示赞赏!

function iqTest(numbers) {
    var num = numbers.split(" ");
    var odd = 0;
    var even = 0;
    var position = 0;
    for(var i = 0; i < num.length; i++) {
        if(num[i]%2!==0) {
           odd++;
           if(odd===1) {
              position = num.indexOf(num[i]) + 1;
             }
        }
        else if(num[i]%2===0) {
           even++;
           if(even===1) {
           position = num.indexOf(num[i]) + 1;
            }
          }
    }
    return position;
}
iqTest("2 4 7 8 10") output 3
iqTest("2 1 2 2") output 2
iqTest("1 2 2") outputs 2 when it should be 1 
Run Code Online (Sandbox Code Playgroud)

geo*_*org 5

最简单的方法是收集子数组中的所有偶数/奇数位置,并检查末尾长度为1的数组:

function iqTest(numbers) {
    numbers = numbers.split(' ');

    var positions = [[], []];

    for (var i = 0; i < numbers.length; i++) {
        positions[numbers[i] % 2].push(i + 1);
    }

    if(positions[0].length === 1) return positions[0][0];
    if(positions[1].length === 1) return positions[1][0];

    return 0;


}

console.log(iqTest("2 4 7 8 10"))
console.log(iqTest("2 1 2 2"))
console.log(iqTest("1 2 2"))
console.log(iqTest("1 3 2 2"))
Run Code Online (Sandbox Code Playgroud)