javascript - 使用 forEach 将函数应用于 JavaScript 中的每个数组项

标签 javascript

我试图了解 forEach 在 Javascript 中的工作原理

var arr = [5,4,3,2,1];

var square = function(x){
   return x * x;
}

arr.forEach(function(item){
     item = square(item);
});

我应该得到[25,16,9,4,1]。但得到 [5, 4, 3, 2, 1]

最佳答案

item 只是回调函数的一个参数(其工作方式类似于局部变量),修改它不会更改数组 - 它不是实际的数组元素。回调的接下来两个参数为您提供数组和索引,以便您可以修改实际的数组元素。

var arr = [5,4,3,2,1];

var square = function(x){
   return x * x;
}

arr.forEach(function(item, index, array){
     array[index] = square(item);
});

工作演示:http://jsfiddle.net/jfriend00/L8598/


您可能需要注意 .map() 是为了为如下操作生成新数组:

var arr = [5,4,3,2,1];

var square = function(x){
   return x * x;
}

var newArray = arr.map(square);

工作演示:http://jsfiddle.net/jfriend00/C226B/

关于javascript - 使用 forEach 将函数应用于 JavaScript 中的每个数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25073455/

相关文章:

javascript - 模拟拖放文件以在 Protractor 中上传

javascript - 如何在组件中调用json数据

javascript - PHP 验证表单

javascript - 检查 ng-model 对象长度

javascript - 我如何在 Reactjs 的 map 中使用 JS 包含和替换?

background.js 中的 Javascript 函数根本不使用消息传递进行调用。

javascript - 如何在没有 attachShadow 的情况下创建自定义元素?

javascript - Angular.js - 使用 $location 服务创建 url

javascript - 将所有容器组件中的所有action creators导入就可以了吗?

javascript - 使用新的数组元素更新 backbone.js 模型