在简单的forEach循环中,第二次迭代传递indexOf == 0

时间:2016-12-03 09:13:25

标签: javascript foreach

为什么第二次迭代通过?它的索引是1,但它传递if条件并写入控制台。

var array = [1,1];
array.forEach(function(number) {
    if (array.indexOf(number) == 0 && number == 1)
        console.log(number);
});

//console:
// 1
// 1

1 个答案:

答案 0 :(得分:1)

Array#indexOf方法总是返回元素的第一个索引,因为两个元素都相同,总是返回0。相反,您可以将元素索引作为Array#forEach方法回调函数中的第二个参数。

var array = [1, 1];

array.forEach(function(number, i) {
  if (i == 0 && number == 1)
    console.log(number);
});