我有一个嵌套数组:
arr = [[1,nil,2,3,4], [2,nil,4,5,6], [6,nil,3,3,5]]
子数组中nil
的子数组中相同索引处的所有元素都必须删除。所有子数组中的第二个索引都有nil
。
我这样做了:
collection = arr.transpose.select(&:any?).transpose
# => [[1, 2, 3, 4], [2, 4, 5, 6], [6, 3, 3, 5]]
它对我有用,虽然我两次使用transpose
。这项技术会导致数据混淆吗?在我看来,这很愚蠢。
答案 0 :(得分:1)
@CarySwoveland在注释中指出了nil
-vs-false
警告,是的,您的double-transpose
是安全的:它仅适用于以矩形开头的数据与,它将产生相等矩形的数据作为输出。您正在过滤掉整行,因此不会错位。
尽管它不是 super 高效的,但还算不错,并且比更直接的循环和操纵更具表现力和可读性。