2017-03-06 25 views
-1

我預計第一的console.log爲[0,10,20,30],第二次是[0,100,20,30]:如何在forEach循環中分配一個值?

var arr = [0,10,20,30] 
 
console.log(arr) 
 
arr.forEach(each) 
 
console.log(arr) 
 

 
function each(data,index) { 
 
    if (index === 1) { 
 
     data = 100 // This isn't assigned to arr[1] 
 
    } 
 
}

+0

ARR [指數] = 100。您不能分配回調的API到沒有數組的數組索引。 –

+0

無論天氣它forEach或任何函數,這不會發生在JavaScript中,因爲它永遠不會通過引用傳遞:http://stackoverflow.com/questions/13506398/why-are-objects-values-captured-inside-function-calls/13508654 #13508654 – slebetman

+0

'forEach'不會做內聯更改。你必須使用地圖來實現。 –

回答

1

您正在分配值賦予局部變量。對於分配到實際的指數,你需要的陣列和指標,參數二和三的Array#forEach

var arr = [0,10,20,30] 
 
console.log(arr) 
 
arr.forEach(each) 
 
console.log(arr) 
 

 
function each(data,index, array) { 
 
    if (index === 1) { 
 
     array[index] = 100; 
 
    } 
 
}
.as-console-wrapper { max-height: 100% !important; top: 0; }

相關問題