gpt4 book ai didi

arrays - swift 平面 map : How to remove only tuples from an array where specific element in the tuple is nil?

转载 作者:搜寻专家 更新时间:2023-11-01 06:14:10 25 4
gpt4 key购买 nike

我有一个元组数组,其中元组包含一些可选值:

让 arrayOfTuples: [(Int, String?, String?)] = ...

我怎样才能最好地从数组中删除那些元组的第二个元素为零的元组(无论第三个元素是否为零)?

当我使用 flatMap

let flatTuplesArray: [(Int, String, String)] = arrayOfTuples.flatMap({ ($0, $1, $2) }) 然后元组不会出现在生成的 flatTuplesArray 中 如果元组的第二个或第三个元素 为零。

我想应用 flatMap 仅在元组的前两个元素($0 和 $1)上,但结果数组仍应包含具有三个元素的元组(并包含“” $2 零值)。

最佳答案

您可以使用 Optional.map在第二个元组元素上展开它或将其删除(通过外部 flatMap),以及第三个元组元素上的 nil-coalescing ??用空字符串替换 nil:

let arrayOfTuples: [(Int, String?, String?)] = [(1, "a", "b"), (2, nil, "c"), (3, "d", nil)]

let flatTuplesArray = arrayOfTuples.flatMap {
t in t.1.map { (t.0, $0, t.2 ?? "") }
}

print(flatTuplesArray)
// [(1, "a", "b"), (3, "d", "")]

如果 t.1nil,则 t.1.map {...} 计算为 nil 是被 flatMap 忽略。否则 t.1.map {...} 计算为闭包的值,$0 是第二个 unwrapped元组元素。

关于arrays - swift 平面 map : How to remove only tuples from an array where specific element in the tuple is nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48641214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com