Arrays 如何跟踪数组中的索引

Arrays 如何跟踪数组中的索引,arrays,scala,sequence,sliding,Arrays,Scala,Sequence,Sliding,在scala中对数组使用滑动函数时,根据原始数组跟踪滑动子数组索引的正确方法是什么 // Initialize some data val bigArray = List(2, 3, 4, 2, 3, 6, 8, 4, 5).toArray val n:Int = 5 // Slide through the big array for (smallArray <- bigArray.sliding(n)) { val thirdValue:Int = smallArray(3)

在scala中对
数组
使用
滑动
函数时,根据原始数组跟踪滑动子数组索引的正确方法是什么

// Initialize some data
val bigArray = List(2, 3, 4, 2, 3, 6, 8, 4, 5).toArray
val n:Int = 5

// Slide through the big array
for (smallArray <- bigArray.sliding(n)) {
  val thirdValue:Int = smallArray(3)
  val k = (bigArray zip smallArray) lastIndexWhere { case (x, y) => x < y }
  if (bigArray(k+1) >= thirdValue) {
    println(bigArray.toList.toString + 
      " has "
      + bigArray(k+1)
      + " >= " 
      + thirdValue 
      + " in "
      + smallArray.toList.toString
      + " at index "
      + k+1)
  }
我需要

List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 6 >= 2 in List(2, 3, 4, 2, 3) at index 5
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 8 >= 3 in List(3, 4, 2, 3, 6) at index 6
更新


我无法让
map
使用
tuple2(Int,Int)
,该tuple2(Int,Int)来自公认答案中的
head
,但是提到
zipWithIndex
让我达到了目的,所以我接受了有用的答案。这就是我的结局:

for (zipArray <- bigArray.slice(0, bigArray.length - 1).zipWithIndex.sliding(n)) {
  val j = zipArray.head._2
  val k = zipArray.last._2
  val smallArray = bigArray.slice(j, k)
  val thirdValue:Int = smallArray(3)
  if (bigArray(k+1) >= thirdValue) {
    println(bigArray.toList.toString +
      " has "
      + bigArray(k+1)
      + " >= "
      + thirdValue
      + " in "
      + smallArray.toList.toString
      + " at index "
      + (k+1) )
  }
}

您可以在滑动之前使用zipWithIndex:

for (smallArrayWithIndex <- bigArray.zipWithIndex.sliding(n)) {
    val startingIndex = smallArrayWithIndex.head.map { case (_, index) => index }
    val smallArray = smallArrayWithIndex.map { case (e, _) => e }
    println("smallArray starts at index " + index + " and contains " + smallArray)
}
for(smallArrayWithIndex索引}
val smallArray=smallArrayWithIndex.map{case(e,))=>e}
println(“smallArray从索引“+index+”开始,包含“+smallArray”)
}

您可以在
滑动之前使用
zipWithIndex

for (smallArrayWithIndex <- bigArray.zipWithIndex.sliding(n)) {
    val startingIndex = smallArrayWithIndex.head.map { case (_, index) => index }
    val smallArray = smallArrayWithIndex.map { case (e, _) => e }
    println("smallArray starts at index " + index + " and contains " + smallArray)
}
for(smallArrayWithIndex索引}
val smallArray=smallArrayWithIndex.map{case(e,))=>e}
println(“smallArray从索引“+index+”开始,包含“+smallArray”)
}

谢谢。我需要做什么才能让标准的
映射
作用于
smallArrayWithIndex.head
(Int,Int)
。我无法得到
map
来解决问题,但您对
zipWithIndex
的帮助最终让我达到了目的。谢谢。谢谢。谢谢。我需要做些什么才能让标准
map
作用于
smallArrayWithIndex.head
,即
(Int,Int)
。我无法得到
map
来解决问题,但您对
zipWithIndex
的帮助最终让我达到了目的。谢谢。
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 6 >= 2 in List(2, 3, 4, 2) at index 5
List(2, 3, 4, 2, 3, 6, 8, 4, 5) has 8 >= 3 in List(3, 4, 2, 3) at index 6
for (smallArrayWithIndex <- bigArray.zipWithIndex.sliding(n)) {
    val startingIndex = smallArrayWithIndex.head.map { case (_, index) => index }
    val smallArray = smallArrayWithIndex.map { case (e, _) => e }
    println("smallArray starts at index " + index + " and contains " + smallArray)
}