例子:

var arr = ["one","two","three"];

arr.forEach(function(part){
  part = "four";
  return "four";
})

alert(arr);

数组仍然保留着它的原始值,有没有办法从迭代函数获得对数组元素的写入权限?

推荐答案

回调被传递给元素、索引和数组本身.

arr.forEach(function(part, index, theArray) {
  theArray[index] = "hello world";
});

edit-如注释中所述,.forEach()函数可以接受第二个参数,该参数将在每次回调调用中用作this的值:

arr.forEach(function(part, index) {
  this[index] = "hello world";
}, arr); // use arr as this

第二个示例显示arr本身在回调中被设置为this.有人可能会认为.forEach()调用中涉及的数组可能是thisdefault值,但不管出于什么原因,它不是;如果不提供第二个参数,this将是undefined.

(注意:如果回调函数是=>函数,则上述关于this的内容不适用,因为在调用此类函数时,this永远不会绑定到任何东西.)

同样重要的是要记住,在Array prototype上提供了一系列类似的实用程序,Stackoverflow上会弹出许多关于某个函数的问题,因此最好的解决方案就是 Select 不同的工具.你有:

  • forEach用于对数组中的每个条目进行操作;
  • filter,用于产生仅包含合格条目的新数组;
  • map,用于通过变换现有数组来生成一对一的新数组;
  • some来判断数组中是否至少有一个元素符合某种描述;
  • every判断数组中的all个条目是否与描述匹配;
  • 如果为find,则在数组中查找值

诸若此类.MDN link

Javascript相关问答推荐

我无法使用tailwind-css和reactJS修改图像的位置

我想做一个程序,计算字符串中所有单词的数量

如何比较嵌套对象的更改并创建更改报告

nPM审计始终发现0个漏洞

Angular:ng-contract未显示

强制执行useStatego struct 化变量[foo,setFoo]的命名约定?

Flisk和JS错误:未捕获的Syntax错误:意外的令牌'<'

使用JavaScript单击上一个或下一个特定按钮创建卡滑动器以滑动单个卡

是否有方法在OpenWeatherMap API中获取过go 的降水数据?

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

React 17与React 18中的不同setState行为

colored颜色 检测JS,平均图像 colored颜色 检测JS

如何将Map字符串,布尔值转换为{key:string;value:bo布尔值;}[]?<>

Mongoose post hook在使用await保存时不返回Postman响应

您能在卸载程序(QtInsteller框架)上添加WizardPage吗?

Next.js服务器端组件请求,如何发送我的cookie token?

更新动态数据中对象或数组中的所有值字符串

环境值在.js文件/Next.js中不起作用

处理TypeScrip Vue组件未初始化的react 对象

与在编剧中具有动态价值的定位器交互