2017-03-06 104 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; }