我必须编写将数组作为第一个参数并将函数作为第二个参数的函数。因此,仅当谓词对数组的所有元素返回true时,它才应返回true。我已经编写了两个函数:“每个”带有一个数组,另一个函数名为“ isOne”(用于检测某个元素是否等于一个),但是由于某种原因,它不起作用。请帮我找出问题所在。
let someArray = [1,1,1];
function every(array, someFunction) {
var i = 0;
var element = array[i];
while (i < array.length) {
if (someFunction == false) {
return false;
break;
}
else {
return true;
i++;
}
}
}
function ifOne (element) {
if (element !== 1) {
return false;
}
else {
return true;
}
}
console.log(every(someArray, ifOne()));
答案 0 :(得分:0)
您需要将代码更新为关注
every(someArray, ifOne)
someFunction(element) == false
var element = array[i]
置于循环之外将永远不会在迭代时更改值,因此,要获得正确的值,请将其移入循环。true
返回变量,并在 falsy 条件下将其设置为false并中断循环。if (!someFunction(element))
。请注意,这不是强制性更新,您可以跳过它。
let someArray = [1, 1, 1];
function every(array, someFunction) {
var i = 0;
var result = true;
while (i < array.length) {
var element = array[i];
if (!someFunction(element)) {
result = false;
break;
}
i++;
}
return result;
}
function ifOne(element) {
if (element !== 1) {
return false;
} else {
return true;
}
}
console.log(every(someArray, ifOne));
请注意,您还可以按照以下步骤简化代码
let someArray = [1,1,1];
function every(array, someFunction) {
return array.every(v => someFunction(v));
}
function ifOne (element) {
return element === 1;
}
console.log(every(someArray, ifOne));