我有如下代码

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]您可以按任何顺序调用操作,如您认为必要。

10-06 13:04