javascript - 将两个 forEach 转换成 map

标签 javascript arrays foreach

如何将这两个循环 forEach 转换为 map 函数?

var storedNames = [1,2,3];
var mod = {id: 3, blocList: [{id:11}, {id:12}]};

storedNames.forEach((item: number) => {
  if (item === mod.id) {
    mod.blocList.forEach((bloc: Bloc) => {
      storedNames.push(bloc.id);
    });
  }
});

结果将是:storedNames = [1, 2, 3, 11, 12]

最佳答案

这会起作用,但它不是 Array.map() 的完美使用。理想情况下,如果要保持 storedNames 完整并使用循环所做的更改创建它的副本,则应使用 map 。如:

modifiedStoredNames = storedNames.map(//do stuff);

据我了解,map 是一种复制数组副本的方法,其中使用作为参数传递的函数对每个元素应用修改。在这种情况下,我们只是使用 map() 进行循环(准确地说是两次循环)并根据该循环内的条件更新数组 storedNames并忽略 map 真正返回的内容。

storedNames.map((item: number) => {
  if (item === mod.id) {
    mod.blocList.map((bloc: any) => {
      storedNames.push(bloc.id);
    })
  }
})

关于javascript - 将两个 forEach 转换成 map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818171/

相关文章:

javascript - 使用 React 删除和重新创建元素

javascript - 在javascript中添加方括号到字符串的开头和结尾

javascript - 有没有办法访问 DOM 服务器端?

C# foreaching 通过 list<struct> 不会改变值

php - 多维数组中的 Foreach

javascript - 如何在 vuetify 上安装翻译?

javascript - 根据先前对象数组中的共享属性创建新对象

javascript - 将对象转换为多维数组 - JavaScript

C++ 字符串溢出

r - 在 R 中的 foreach 循环中使用栅格堆栈和 doParallel