arrays - 使用转置从列中删除 'nil'

标签 arrays ruby

我有一个嵌套数组:

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/

相关文章:

ruby-on-rails - 如何在 Ruby on Rails 中的模型之间创建一对多关系?

arrays - 如何使用 jq 将字符串数组转换为对象?

arrays - Swift 3/4 - 仅在所需的 tableView 单元格中填充数据

javascript - Rails 3.2 - 表单多次错误提交

ruby - 使用 Mongoid 实现多态多对多关系?

ruby-on-rails - 让 Bundler 从 Gemfile/s 中解析并加载依赖项,在 gem/s 中加载 :path

java - Java 中的查找表?

javascript - 将数组的数组转换为对象的数组

javascript - 如何在 javascript 中将提交的测验答案数组与正确答案数组进行比较

ruby - 带有命名键的百分比格式字符串不接受带有字符串键的散列?