如何获得索引(:)返回多个索引?

the*_*Fan 5 arrays ios swift swift4

这是一个组数组.

var group = ["H","H","E","D",
             "G","D","G","E",
             "D","B","A","B",
             "A","A","G","C",
             "C","H","D","G",
             "H","B","E","F",
             "F","C","E","A",
             "B","C","F","F"]
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情来找到"A"的索引.

group.index(of: "A"!)
Run Code Online (Sandbox Code Playgroud)

但这将只返回第一个指数,但不会返回下一个三个"A"的其他指数.

print(group.index(of: "A")!) //10
Run Code Online (Sandbox Code Playgroud)

如何让程序返回"A"的所有四个索引?

And*_*ini 11

您可以使用的组合enumeratedcompactMap:

let indexArray = group.enumerated().compactMap {
   $0.element == "A" ? $0.offset : nil
}    
print(indexArray) // [10, 12, 13, 27]
Run Code Online (Sandbox Code Playgroud)

  • 注意:这将很快被称为`compactMap` (2认同)

Ala*_* T. 6

或者只是枚举/过滤/映射:

 group.enumerated().filter{$1=="A"}.map{$0.offset}
Run Code Online (Sandbox Code Playgroud)

[编辑]根据亚历山大的建议将$ 0.0更改为$ 0.offset(使代码更清晰/明确)