为了账号安全,请及时绑定邮箱和手机立即绑定

在javascript中进行foreach时是否可以更改数组的值?

在javascript中进行foreach时是否可以更改数组的值?

繁花不似锦 2019-10-15 09:19:58
例:var arr = ["one","two","three"];arr.forEach(function(part){  part = "four";  return "four";})alert(arr);数组仍保留其原始值,是否可以通过迭代函数对数组元素进行写访问?
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

回调传递给元素,索引和数组本身。


arr.forEach(function(part, index, theArray) {

  theArray[index] = "hello world";

});

编辑 —如注释中所述,该.forEach()函数可以采用第二个参数,该参数将用作this每次对回调的调用中的值:


arr.forEach(function(part, index) {

  this[index] = "hello world";

}, arr); // use arr as this

第二个示例显示了arr自己this在回调中的设置。有人可能会认为.forEach()调用中涉及的数组可能是的默认值this,但无论出于何种原因,它都不是。this会undefined如果没有提供第二个参数。


同样重要的是要记住,Array原型上提供了一整套类似的实用程序,并且在Stackoverflow上弹出了有关一个或另一个功能的许多问题,因此最好的解决方案是简单地选择其他工具。你有:


forEach 用于处理数组中的每个条目或对数组中的每个条目执行操作;

filter 用于产生仅包含合格条目的新数组;

map 用于通过变换现有阵列来制作一对一的新阵列;

some 检查数组中的至少一个元素是否符合某些描述;

every检查数组中的所有条目是否与描述相匹配;

find 在数组中寻找一个值


查看完整回答
反对 回复 2019-10-15
?
潇湘沐

TA贡献1816条经验 获得超6个赞

数组:[1, 2, 3, 4]

结果:["foo1", "foo2", "foo3", "foo4"]


Array.prototype.map() 保留原始阵列

const originalArr = ["Iron", "Super", "Ant", "Aqua"];

const modifiedArr = originalArr.map(name => `${name}man`);


console.log( "Original: %s", originalArr );

console.log( "Modified: %s", modifiedArr );

Array.prototype.forEach() 覆盖原始数组

const originalArr = ["Iron", "Super", "Ant", "Aqua"];

originalArr.forEach((name, index) => originalArr[index] = `${name}man`);


console.log( "Overridden: %s", originalArr );


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 1501 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信