我有一个嵌套数组:
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
。这种技术会导致数据混淆吗?对我来说这看起来很简单。
最佳答案
根据@CarySwoveland 在评论中指出的nil
-vs-false
警告,是的,您的双重转置
是安全的:它将只对开始时为矩形的数据起作用,并且它会产生同样矩形的数据作为输出。您正在过滤掉整行,因此不会出现任何错位。
虽然它不是 super 高效,但还算不错,而且比更直接的循环和操作更具表现力和可读性。
关于arrays - 使用转置从列中删除 'nil',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51644125/