**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
6天前关闭
Improve this question
我创建了一个函数,实际上是两个,第一个检查数组是否为偶数,第二个做两件事:在偶数数组中查找奇数数(如果数组是偶数),并在奇数数组中查找偶数数(如果数组是奇数)。但是在第一种情况下(即当我在偶数数字数组中找到奇数数字时),并针对测试用例(即[0,1,2])运行它,它输出0而不是1。
function isMostlyEven(array, thresholdPercentage) {
let evenCount = 0;
let totalCount = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] % 2 === 0) {
evenCount++;
}
totalCount++;
}
const evenPercentage = (evenCount / totalCount) * 100;
if (evenPercentage >= thresholdPercentage) {
return true;
}else {
return false;
}
}
function findOutlier(integers){
if (isMostlyEven(integers, 80)) {
for (let i = 0; i < integers.length; i++) {
const int = Math.abs(integers[i]);
if (int % 2 === 1) { // searches an arr of even nums for odd nums
return int; // where the error is; that is returns 0 instead of 1(the odd num);
}
}
} else if (!isMostlyEven(integers, 80)) {
for (let i = 0; i < integers.length; i++) {
const int = Math.abs(integers[i]);
if (int % 2 === 0) { // searches an arr of odd nums for even nums
return int;
}
}
}
}
const intArr = [0, 1, 2]; // should output 1 not 0
console.log(findOutlier(intArr));
1条答案
按热度按时间pxy2qtax1#
它输出0而不是1的原因是evenPercentage将始终低于80%,直到intArr的长度大于4。若要使用80 thresholdPercentage表示大部分偶数,则数组必须至少包含4个偶数。