首页 > 解决方案 > 检查多个数组元素,如果都匹配则返回 true

问题描述

我想确定以下数组的所有元素是否相互匹配:

val a = Array(1,1,1)
val b = Array(1,0,1)
val c = Array(0,1,1)

这里的输出应该是

Array(0,0,1) 

因为 a(2),b(2) 和 c(2) 的所有值都是 1,但是在所有情况下它都是 0。在 Scala 中有没有解决这个问题的功能性方法?

标签: scala

解决方案


如果数组的大小都相同,那么一种方法是对transpose数组进行映射,然后reduce使用 Java 的按位 AND 运算符对结果进行映射&

val a = Array(1, 1, 1)
val b = Array(1, 0, 1)
val c = Array(0, 1, 1)

val result = Array(a, b, c).transpose.map(_.reduce(_ & _)) // Array(0, 0, 1)

推荐阅读