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)
最简单的方法是收集子数组中的所有偶数/奇数位置,并检查末尾长度为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)
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |