Swift数组在过滤后获取元素的新索引

时间:2018-06-07 03:33:51

标签: arrays swift

假设我有这个数组:

let b = a.filter { $0 >= 0 } // [0, 2, 4, 6]

我最喜欢的数字是4(索引= 4)。

现在,数组被过滤为负数,如此

{{1}}

我最喜欢的数字(4)现在有索引= 2.

我的意思是我如何通过优雅的方式通过代码(我最喜欢的索引是2)了解它?

谢谢!

2 个答案:

答案 0 :(得分:0)

计算“最喜欢”之前的元素数量不会被丢弃。这是你最喜欢的新索引:

let a = [0, -1, 2, -3, 4, -5, 6]
let aFavoriteIndex = 4

let b = a.filter({ $0 >= 0 })
let bFavoriteIndex = a.prefix(aFavoriteIndex).filter({ $0 >= 0 }).count
b[bFavoriteIndex] // 4

答案 1 :(得分:0)

只需保存该值,然后使用index(of:)查找新索引

let v = a[4]
let newIndex = a.filter { $0 >= 0 }.index(of:v)