2016-12-03 68 views
-1

爲什麼第二次迭代通過?它的索引是1,但它傳遞if條件並寫入控制檯。在簡單的forEach循環中,第二次迭代通過indexOf == 0

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

//console: 
// 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); 
 
});