【发布时间】:2025-11-25 17:05:01
【问题描述】:
我正在尝试解决这个问题。有一串数字,程序在给定的数字中找到一个不同的均匀度,并返回这个数字的位置。元素必须通过其索引返回(数字是数字所在的实际位置)。如果它的索引为 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
【问题讨论】:
-
请为所有测试添加想要的结果。
-
未来提示:在实现这样的算法之前,请考虑使用 TDD。它可以让您定义给定输入的确切期望,例如
it("should return -1 for empty string", () => { expect(iqTest("")).to.equal(-1); });明确定义了如果输入为空,算法需要输出什么。您编写满足此条件的代码,并在继续修改它时,始终确保所有以前编写的测试都通过。这通常会产生干净且不易出错的代码。
标签: javascript for-loop indexing split