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

Scala中如何通过索引数组优雅提取Seq中的元素?

优雅地通过索引数组从Scala Seq中获取元素

先明确你给出的基础代码:

val nums = Seq(1, 2, 3, 4, 5, 7, 9, 11, 14, 12, 16)
val i = Array.range(2, 10, 3) // 生成索引数组: Array(2, 5, 8)

要获取Seq中对应索引的元素,有几种简洁优雅的实现方式:

方式一:使用map方法

直接对索引数组调用map,通过索引访问Seq元素:

val result = i.map(nums(_))
// 输出结果: Array(3, 7, 14)

这里nums(_)是idx => nums(idx)的简写,map会遍历索引数组的每个元素,取出Seq对应位置的值,返回类型与索引数组一致(此处为Array)。

方式二:转换为Seq类型结果

如果需要结果是Seq而非Array,可以先把索引数组转为Seq再调用map,或者将最终结果转为Seq:

// 先转索引数组为Seq
val resultSeq = i.toSeq.map(nums)
// 结果: Seq(3, 7, 14)

// 或先处理再转Seq
val resultSeq2 = i.map(nums).toSeq

方式三:for推导式

用for推导式写法更直观,可读性强:

val result = for (idx <- i) yield nums(idx)
// 输出结果: Array(3, 7, 14)

注意事项

确保索引数组中的所有索引都在Seq的有效范围内(即索引值需满足 0 <= idx < nums.length),否则会抛出IndexOutOfBoundsException。

内容的提问来源于stack exchange,提问作者Станислав

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:30:46