[英]JavaScript forEach()
在學習JavaScript中的forEach()方法時,我有幾個與之相關的問題。 目前,我已經編寫了以下代碼:
var arr = [1,2,3,4,5,6];
arr.forEach(function(elem, idx, arr){
elem=elem*2;
});
alert(arr); // "1,2,3,4,5,6"
我的目標是將arr中的每個元素簡單地乘以2,但是當我使用alert檢查最終值時,arr中的值似乎沒有被修改。 這是什么問題
另外,對於forEach函數采用的3個參數,我有些困惑。 首先,是否需要傳遞3個參數? 如果一個人不提供確切的3個參數,將會發生什么? 我看過的一些教程似乎只提供了一個參數,但解釋不清楚。 其次,參數名稱是否重要(例如e,elem或element)?
謝謝。
陣列未修改,因為您未修改它。 為此,請按以下方式更新代碼。
var arr = [1,2,3,4,5,6];
arr.forEach(function(elem, idx, arr){
arr[idx] = elem*2
});
console.log(arr);
如果您檢查控制台,則會看到更新的arr。
elem
來就地編輯數組。 但是,您可以使用idx
變量,例如arr[idx] = elem * 3
或使用map
函數。 對於第一個問題,只需使用map
var arr = [1,2,3,4,5,6];
arr = arr.map(function(elem){
return elem*2;
});
alert(arr); // "2,4,6,8,10,12"
arguments
是可選的,名稱完全沒有關系。
除了elem
,您沒有為其他任何東西分配新值,這僅在回調的范圍內。 修改您的代碼,以便將elem * 2
分配給arr[idx]
。 工作示例:
var arr = [1, 2, 3, 4, 5, 6]; arr.forEach(function(elem, idx) { arr[idx] = elem * 2; }); document.body.textContent = arr;
但是對於類似的任務,您應該使用map :
var arr = [1, 2, 3, 4, 5, 6]; arr = arr.map(function(num) { return num * 2; }); document.body.textContent = arr;
參數是可選的。
idx使您知道當前正在評估的數組元素的索引。
arr,是您要評估的數組。
所以elem == arr [idx]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.