循环的JavaScript与中的JavaScript不起作用
我编写了两个名为some和each的函数,希望得到如下所示的结果:循环的JavaScript与中的JavaScript不起作用,javascript,for-loop,Javascript,For Loop,我编写了两个名为some和each的函数,希望得到如下所示的结果: 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 我的职能是: f
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;
}
但是结果都是假的
一旦我将中的for…更改为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;
}
函数every(数组、谓词){
对于(var i=0;i
为什么for..in
不能得到正确答案?for..in
遍历正在迭代的对象的属性名称
在本例中,这些元素是0
,1
,2
,因此您尝试调用这些元素上的谓词,而不是实际的数组元素
。迭代的顺序不能保证,它可以在非索引属性上迭代。 < P>如果您不想使用传统的< <代码> > <代码>循环,请考虑使用<代码> > <>代码>循环,重复数组中的元素。code>for…in
遍历键
function every (array, predicate) {
for (var element of array) {
if (!predicate(element)) {
return false;
}
}
return true;
}
注意:根据文档,这需要一个运行ES6 Harmony提案的实施。可能的副本