基于另一个数组信息的scala数组过滤

scala array filtering based on information of another array

我有 2 种类型的数组,如下所示: 阵列一,

Array(productId, categoryId)

   (2, 423) 
   (6, 859)
   (3, 423)
   (5, 859)

和另一个数组 Array((productId1, productId2), count)

   ((2, 6), 1), ((2, 3), 1), ((6, 5), 1), ((6, 3), 1)

我想根据第一个数组过滤第二个数组, 首先我想检查数组2,看看productId1和productId2是否属于同一类别,如果是,则保留,否则将过滤掉该元素。 所以上面的列表将被过滤以保留:

   ( ((2, 3), 1), ((6, 5), 1) )

有人可以帮我解决这个问题吗?非常感谢。

如果您不介意将第一个数组用作映射,即:

scala> val categ_info = cats = Array((2, 423), (6, 859), (3, 423), (5, 859)).toMap
categ_info: Map[Int, Int] = Map(2 -> 423, 6 -> 859, 3 -> 423, 5 -> 859)

然后我们有(为方便起见,将示例数据设置为简单的 Ints):

val data = Array(((2, 6), 1), ((2, 3), 1), ((6, 5), 1), ((6, 3), 1))

data.filter { case ((prod1_id, prod2_id), _) => 
    categ_info(prod1_id) == categ_info(prod2_id) 
}

生产:

res2: Array[((Int, Int), Int)] = Array(((2, 3), 1), ((6, 5), 1))

根据要求。