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

Scala中如何根据内层数组元素获取外层数组索引?

Scala 根据二维数组内层元素获取外层数组索引

针对你的需求,这里提供几种实用的Scala解决方案,直接基于数组原生操作实现:

1. 安全获取首个匹配的外层索引(推荐)

使用zipWithIndex将每个外层数组与它的索引绑定,再通过find找到第一个包含目标元素的外层数组,最终返回Option[Int]类型(找不到元素时返回None,避免抛出异常):

val arr = Array(Array("1","page"),Array("1","thankyou"))

def getFirstOuterIndex(target: String): Option[Int] = {
  arr.zipWithIndex.find { case (innerArr, _) => innerArr.contains(target) }.map(_._2)
}

// 调用示例
getFirstOuterIndex("page")      // 输出 Some(0)
getFirstOuterIndex("thankyou")  // 输出 Some(1)
getFirstOuterIndex("unknown")   // 输出 None

2. 获取所有匹配的外层索引

如果需要找出所有包含目标元素的外层数组索引,可以用filter筛选后提取索引:

def getAllOuterIndices(target: String): Array[Int] = {
  arr.zipWithIndex.filter { case (innerArr, _) => innerArr.contains(target) }.map(_._2)
}

// 调用示例
getAllOuterIndices("1")  // 输出 Array(0, 1)

3. 非安全获取(仅当确定元素必存在时使用)

如果你能确保目标元素一定存在于数组中,可以直接提取索引,但找不到时会抛出NoSuchElementException,不推荐在不确定场景使用:

val index = arr.zipWithIndex.find(_._1.contains("page")).get._2
// 输出 0

说明

  • zipWithIndex是Scala集合的常用操作,它会将集合中的每个元素与对应的索引组成元组(元素, 索引)
  • innerArr.contains(target)用于判断内层数组是否包含目标元素
  • 返回Option的方式更符合Scala的函数式编程风格,能优雅处理元素不存在的情况

内容的提问来源于stack exchange,提问作者A B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:25:14