从 Bool 数组返回索引值数组,其中 true

Posted

技术标签:

【中文标题】从 Bool 数组返回索引值数组,其中 true【英文标题】:Return an array of index values from array of Bool where true 【发布时间】:2016-11-08 13:42:05 【问题描述】:

任何人都知道一种优雅的方法,可以从值为真的布尔数组中返回索引值数组。例如:

let boolArray = [true, true, false, true]

这应该返回:

[0,1,3]

【问题讨论】:

***.com/questions/24041842/… ? 【参考方案1】:
let boolArray = [true, true, false, true]
let trueIdxs = boolArray.enumerate().flatMap  $1 ? $0 : nil 
print(trueIdxs) // [0, 1, 3]

或者(可能更具可读性)

let boolArray = [true, true, false, true]
let trueIdxs = boolArray.enumerate().filter  $1 .map  $0.0 
print(trueIdxs) // [0, 1, 3]

【讨论】:

能否请您解释一下为什么您认为它是一种优雅且在您看来会很有帮助的最佳方法。 @JeetendraChoudhary 当我们在有关 Swift 的问题中提到 "elegant" 时,我和许多人都会转向 Swift 中可用的函数式方法。有许多不同的方法可以访问支持某些给定条件 w.r.t 的索引。数组的值。我个人自己使用enumerate().flatMapenumerate().filter ... .map 方法。 谢谢你确实很有帮助,向像你这样的前辈学习他们喜欢某种方法或方法的原因和原因总是有帮助的。再次感谢您。 @JeetendraChoudhary 乐于助人! 太棒了。谢谢@dfri

以上是关于从 Bool 数组返回索引值数组,其中 true的主要内容,如果未能解决你的问题,请参考以下文章

php 判断数组里是不是有某个值

array_key_exists — 检查数组里是否有指定的键名或索引

array_key_exists — 检查数组里是否有指定的键名或索引

php 数组索引值如何重新从0开始递增

bool的值分别为0,1;那哪个代表true哪个代表false?

魔术索引I