ios - 使用 map 迭代时排除数组中的元素
问题描述
我有如下代码
let myNums = getXYZ(nums: [1,2,3,4,5])
func getXYZ(nums: [Int]) -> [Int] {
let newNum = nums.map { (num) -> Int in
if num == 2 {
//do something and continue execution with next element in list like break/fallthrough
return 0
}
return num
}
return newNum
}
print(myNums)`
这打印 [1,0,3,4,5]
但我希望输出为 [1,3,4,5]。如何排除 2?我想更改使用的 if 语句,以便在看到数字 2 时不包含在数组中
我必须在这里使用 .map 但要排除 2 ..有没有可能
请告诉我
解决方案
我只是filter
按照你的问题描述的那样做一个,你想filter
通过删除另一个数字来获得这些数字。
var myNums = [1, 2, 3, 4, 5]
let excludeNums = [2]
let newNum = myNums.filter({ !excludeNums.contains($0) })
print(newNum) //1, 3, 4, 5
如果你需要做一个地图,你可以先做一个map
then filter
。
let newNum = myNums.map({ $0*2 }).filter({ !excludeNums.contains($0) })
print(newNum) //4, 6, 8, 10
这映射到将两者相乘2
,然后通过2
从列表中删除新的进行过滤。如果您想删除首字母2
,则必须先过滤然后映射。由于两者都返回 a[Int]
您可以按照您认为必要的任何顺序调用操作。
推荐阅读
- scala - 为什么加特林在发送请求之前会暂停
- android - 无法使用库从 newsapi.org 获取数据。帮助调试
- powershell - Powershell:整理最新文件
- javascript - 单击 contentEditable div 外部的按钮时如何保留选择
- firebase - 应用程序中未处理的异常后 FCM 令牌未注册
- php - 如何更新与其当前状态相对应的列
- java - Postgres中没有时区默认CURRENT_TIMESTAMP的字段TIMESTAMP的JPA模型类?
- python - Python Selenium - Chrome 驱动程序版本 75 错误
- ios - 存储在 FireBase 存储中的 ImageURL 不存储在 FireBase 数据库中
- php - “捆绑”应用程序“不存在或未启用