You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中List过滤条件在不同场景失效问题求助

问题原因与解决方案

核心问题

你用indexOf(it)判断元素索引的逻辑是错误的——indexOf返回的是集合中第一个匹配该元素的索引,而非当前元素的实际索引。

为什么navigation能正常工作?

navigation里你要提取的索引0、5、10对应的元素[1]、[5]、[9]都是唯一的,所以indexOf(it)返回的就是它们的实际索引,刚好符合0..10 step5的条件,因此结果正确。

为什么altNavigation出问题?

altNavigation里索引5的[X]在索引9处重复出现:

  • 遍历到索引5的[X]时,indexOf(it)返回5(符合条件,应该被加入结果)
  • 遍历到索引9的[X]时,indexOf(it)还是返回5(同样符合条件,会被错误加入结果)
    你说只拿到[1]、[9],大概率是检查结果时没注意到重复的[X],但根源都是indexOf的逻辑不符合“按实际索引提取元素”的需求。

正确写法

要基于实际索引过滤元素,直接用filterIndexed获取当前元素的索引:

val diagnolRow = navigation.filterIndexed { index, _ -> index in 0..10 step 5 }
val diagnolRowAlt = altNavigation.filterIndexed { index, _ -> index in 0..10 step 5 }

这样不管元素是否重复,都能精准提取索引0、5、10对应的元素。

内容的提问来源于stack exchange,提问作者Dumile Chiwuta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:53:16