javascript - 将两个 forEach 转换为 map
问题描述
如何将这两个循环 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
根据该循环中的条件更新数组。并忽略地图真正返回的内容。
storedNames.map((item: number) => {
if (item === mod.id) {
mod.blocList.map((bloc: any) => {
storedNames.push(bloc.id);
})
}
})
推荐阅读
- symfony4 - 如何解决 ApiPlatform 身份验证错误?
- java - 创建名为“dataSource”的 bean 时出错 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]
- c# - 正则表达式查找带空格的整数中的无效字符
- flutter - 如何在 Flutter 中更改文本的颜色
- arrays - Google 表格创建 IF 或 IFS
- mapreduce - CouchDB 视图每个键减少一个文档
- entity-framework-core - Entity Framework Core Cosmos DB 提供程序的 Guid 分区键
- python - 如何使用 python 读取绘图和提取信息
- c++ - 不懂迭代器、引用和指针失效,一个例子
- deep-learning - 使用 keras 对多类图像分割中的样本进行加权