首页 > 解决方案 > 使用 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 ..有没有可能

请告诉我

标签: iosarraysswiftarray-map

解决方案


我只是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

如果你需要做一个地图,你可以先做一个mapthen filter

let newNum = myNums.map({ $0*2 }).filter({ !excludeNums.contains($0) })
print(newNum) //4, 6, 8, 10

这映射到将两者相乘2,然后通过2从列表中删除新的进行过滤。如果您想删除首字母2,则必须先过滤然后映射。由于两者都返回 a[Int]您可以按照您认为必要的任何顺序调用操作。


推荐阅读