我有两种类型的数组: 数组一,
数组(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) )
有人可以帮我这个吗?非常感谢你。
答案 0 :(得分:2)
如果您不介意将第一个数组用作地图,即:
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)
然后我们(为方便起见,将示例数据设置为简单的Int
):
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))
按要求。