当前位置: 首页 > 面试题库 >

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

西门安民
2023-03-14
问题内容

例:

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";
});

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

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

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

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

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

  • forEach 用于处理数组中的每个条目或对数组中的每个条目执行操作;
  • filter 用于产生仅包含合格条目的新数组;
  • map 用于通过变换现有阵列来制作一对一的新阵列;
  • some 检查数组中的至少一个元素是否符合某些描述;
  • every检查数组中的 所有 条目是否与描述相匹配;
  • find 在数组中寻找一个值

等等。



 类似资料:
  • 数组仍然具有它的原始值,是否有任何方法可以通过迭代函数对数组的元素进行写访问?

  • 为下面的代码生成的字节代码在类中创建一个字段。当为可变字段赋值时,原始委托不会更改。 有没有一种方法可以在运行时更改委托,同时保持实现? 该示例取自https://kotlinlang.org/docs/reference/delegation.html文档并经过编辑。

  • 问题内容: 在Linux中,当我从外壳中调用python时,它将复制其环境,并启动python进程。因此,如果我执行以下操作: 当python进程返回时,假设FOO最初是未定义的,它将仍然是未定义的。python进程(或任何子进程)是否可以修改其父进程的环境? 我知道您通常使用类似的方法解决此问题 但这与我的其他要求相冲突。 问题答案: 任何流程都不能更改其父流程(或任何其他现有流程的环境)。 但

  • 我有一个字符串字段,它可能在前导和尾随处包含空白。我想修剪这些空白并使用返回修剪后的文本。如果文本为空,我想返回null。 当查看此链接上显示的实现示例时,我不确定如何创建一个获取字符串并返回字符串的方法,而不是创建方法。那么,如何根据给定的场景实现这种方法呢?

  • 问题内容: 在Python中,是否可以在运行时重新定义函数的默认参数? 我在这里定义了带有3个参数的函数: 接下来,我尝试(未成功)设置y的默认参数值,然后尝试调用不带参数的函数: 但是由于未正确设置默认值,所以产生了以下错误: 正如我在此尝试的那样,是否可以在运行时重新定义函数的默认参数? 问题答案: 只需使用functools.partial 这里的一个问题:您将无法调用它,因为您应该手动说

  • 问题内容: 更新:我遇到的问题是三件事的结合: 当$ priority(设置为创建日期)更改时,向数组添加标头。这样一来,我就可以按ng-repeat按周和日对任务进行分组。 检查任务时重新使用该列表。已检查的任务应转到底部。 创建新任务时,我需要将它们添加到列表的顶部而不是底部。 这是所有代码的plnkr:http ://plnkr.co/edit/A8lDKbNvhcSzbWVrysVm 我正