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

例:


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


arr.forEach(function(part){

  part = "four";

  return "four";

})


alert(arr);

数组仍保留其原始值,是否可以通过迭代函数对数组元素进行写访问?


繁花不似锦
浏览 1502回答 3
3回答

蝴蝶刀刀

回调传递给元素,索引和数组本身。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 在数组中寻找一个值

潇湘沐

数组:[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 );
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript