基于另一个数组信息的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)
然后我们有(为方便起见,将示例数据设置为简单的 Int
s):
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))
根据要求。
我有 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)
然后我们有(为方便起见,将示例数据设置为简单的 Int
s):
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))
根据要求。