Swift中如何从二维数组中移除指定整数的所有实例?
解决Swift二维数组移除指定整数所有实例的问题
你需要的是遍历每个子选票数组,移除其中目标候选者的所有票数,而不是过滤整个子数组。正确的做法是用map遍历外层数组,对每个内层数组用filter剔除目标值:
// 假设要移除候选者2的所有票数 let target = 2 var newBallots = allBallots.map { ballot in ballot.filter { $0 != target } }
为什么你之前的尝试不对:
allBallots.filter { $0 != 2 }:外层数组的元素是[Int]类型,和整数2直接比较会触发类型不匹配错误,编译器根本不会通过。allBallots.filter { $0 != [2] }:这是在过滤掉完全等于[2]的子数组,只会移除那些只有候选者2的选票,其他选票里的2依然保留。allBallots.filter { $0.contains(2) }:这是反过来保留所有包含2的子数组,和你要移除2的需求完全相反。
额外优化(可选):
如果某个选票在移除目标候选者后变成空数组(比如该选民的所有候选都被淘汰),可以额外过滤掉这些无效选票:
var newBallots = allBallots.map { $0.filter { $0 != target } } .filter { !$0.isEmpty }
内容的提问来源于stack exchange,提问作者Geoff79
相关产品推荐
相关产品推荐

