我有一个嵌套数组:
arr = [[1,nil,2,3,4], [2,nil,4,5,6], [6,nil,3,3,5]]
必须移除子数组中位于相同索引且在整个数组中为nil
的任何元素。所有子阵列中的第二个索引具有CCD_ 2。
我做到了:
collection = arr.transpose.select(&:any?).transpose
# => [[1, 2, 3, 4], [2, 4, 5, 6], [6, 3, 3, 5]]
它对我有效,我正在使用transpose
两次。这种技术会导致数据混淆吗?对我来说,这看起来很愚蠢。
@CarySwoveland在评论中指出了nil
-vs-false
的警告,是的,您的双transpose
是安全的:它只处理一开始是矩形的数据,并且它将产生同样矩形的数据作为输出。您正在过滤掉整行,这样就不会出现任何错位。
虽然它不是超级高效的,但也不算太差,而且表现力更强;可读性比更直接的循环&操纵