如何将这两个循环 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/