使用转置从列中删除"nil"

  • 本文关键字:删除 nil 转置 arrays ruby
  • 更新时间 :
  • 英文 :


我有一个嵌套数组:

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是安全的:它只处理一开始是矩形的数据,并且它将产生同样矩形的数据作为输出。您正在过滤掉整行,这样就不会出现任何错位。

虽然它不是超级高效的,但也不算太差,而且表现力更强;可读性比更直接的循环&操纵

最新更新