【发布时间】:2015-03-19 20:02:04
【问题描述】:
我写了两个名为 some 和 every 的函数,期望得到如下所示的结果:
console.log(every([NaN, NaN, NaN], isNaN));
// → true
console.log(every([NaN, NaN, 4], isNaN));
// → false
console.log(some([NaN, 3, 4], isNaN));
// → true
console.log(some([2, 3, 4], isNaN));
// → false
我的职能是:
function every(array,predicate){
for (var element in array){
if (!predicate(element))
return false;
}
return true;
}
function some(array, predicate){
for (var element in array){
if (predicate(element))
return true;
}
return false;
}
但是结果都是false
一旦我将for...in 更改为for 循环,答案就是正确的。
function every(array, predicate) {
for (var i = 0; i < array.length; i++) {
if (!predicate(array[i]))
return false;
}
return true;
}
function some(array, predicate) {
for (var i = 0; i < array.length; i++) {
if (predicate(array[i]))
return true;
}
return false;
}
为什么for..in不能得到正确答案?
【问题讨论】:
标签: javascript for-loop