如何在Swift中按指定Bool数组更新元组数组的布尔值?
实现方案
核心需求为将元组数组每个元素的第二个Bool值,替换为Bool数组对应下标的取值,根据使用场景有两种最优实现:
- 偏好简洁函数式写法,可接受生成新数组
采用zip+map组合实现,代码简洁易读:var tupleArray = [("first", true), ("second", false ), ("third", true)] var boolArray = [true, false, false] // 直接替换原数组即可得到目标结果 tupleArray = zip(tupleArray, boolArray).map { ($0.0, $1) } - 数组规模较大,希望原地修改节省内存开销
直接遍历下标更新,避免额外开辟整段新数组内存:// 先取最小长度避免索引越界 let minLength = min(tupleArray.count, boolArray.count) for index in 0..<minLength { tupleArray[index].1 = boolArray[index] }
注意:两种方案默认仅处理两个数组长度重叠的部分,超出最短长度的元素不会被修改。如果业务要求两个数组长度必须一致,可在处理前添加校验逻辑:
precondition(tupleArray.count == boolArray.count, "元组数组与Bool数组长度必须匹配")
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

