ruby - 如何 "unflatten"一个 Ruby 数组?

标签 ruby arrays

我目前正在尝试转换这个 ruby​​ 数组:

[5, 7, 8, 1]

进入这个:

[[5], [7], [8], [1]]

我目前是这样做的:

[5, 7, 8, 1].select { |element| element }.collect { |element| element.to_a }

但我收到以下警告:

warning: default `to_a' will be obsolete

最佳答案

最短最快的解决方案是使用 Array#zip :

values = [5, 7, 8, 1]
values.zip # => [[5], [7], [8], [1]]

另一种可爱的方式是使用 transpose :

[values].transpose # =>  [[5], [7], [8], [1]]

最直观的方法可能是@Thom 的建议:

values.map { |e| [e] }

关于ruby - 如何 "unflatten"一个 Ruby 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962883/

相关文章:

ruby - 在没有输出的情况下获取不存在的系统用户信息

python - 查找两个数组的非交叉值

ruby-on-rails - 在没有 Lighttpd/Apache 的情况下服务 Web 应用程序

ruby - 如何查找数组中的部分重复项?

php - 有点简单的PHP数组求交问题

javascript - 遍历数组以在 Javascript 中创建对象

sql - 将 postgresql 数组解包成行

python - 通过移动索引移动二维数组中的数据

ruby - 无法使用 Netbeans 和 ubuntu 调试 ruby​​ 1.9.3

ruby - 如何从数组中提取数组?