我有如下代码
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时不包含在数组中
我必须使用。在这里映射但要排除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
,然后再绘制filter
。let newNum = myNums.map({ $0*2 }).filter({ !excludeNums.contains($0) })
print(newNum) //4, 6, 8, 10
这映射到将两者相乘
2
,然后通过从列表中删除新的2
进行过滤。如果要删除初始的2
,则必须先过滤,然后映射。由于两者都返回一个[Int]
您可以按任何顺序调用操作,如您认为必要。