【问题标题】:How do I convert every element in an array to its own array?如何将数组中的每个元素转换为自己的数组?
【发布时间】:2017-02-13 18:29:06
【问题描述】:

使用 Ruby 2.4。我有一个字符串数组...

["a", "b", "c"]

如何采用上述方法并将每个元素转换为自己的一个元素数组?所以我希望这样一个操作的结果是

[["a"], ["b"], ["c"]]

?

【问题讨论】:

  • ["a", "b", "c"].each_cons(1).to_av#=> [["a"], ["b"], ["c"]] 是另一种方式。

标签: arrays ruby


【解决方案1】:

你可以使用zip:

["a", "b", "c"].zip #=> [["a"], ["b"], ["c"]] 

【讨论】:

    【解决方案2】:
    a.map { |s| Array(s) }
    

    a.map { |s| [s] }
    

    【讨论】:

    • ["a", "b", "c"].map &Kernel.method(:Array)
    • @mudasobwa 或者因为Kernel被混入了所有东西,所以我们可以假装有功能:["a", "b", "c"].map &method(:Array)
    • 平淡无奇,但 99% 的红宝石会选择你的 #2。
    【解决方案3】:

    另外,您可以使用combinationpermutation 方法,它还提供更多功能

    a.combination(1).to_a
    #=> [['a'], ['b'], ['c']]
    a.combination(2).to_a
    #=> [["a", "b"], ["a", "c"], ["b", "c"]]     
    
    a.permutation(1).to_a
    #=> [['a'], ['b'], ['c']]
    a.permutation(2).to_a
    #=> [["a", "b"], ["a", "c"], ["b", "a"], ["b", "c"], ["c", "a"], ["c", "b"]]
    

    【讨论】:

      【解决方案4】:

      有趣的是,您可以使用Array#zip 来执行此操作。我没有意识到 #zip 在没有争论的情况下工作。 Ruby 总是有新花样。

      并不是说这更好,但它可能更直观一点:

      >> ["a", "b", "c"].each_slice(1).to_a
      => [["a"], ["b"], ["c"]]
      

      【讨论】:

        猜你喜欢
        • 2016-10-25
        • 2021-07-26
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 1970-01-01
        • 2016-02-12
        • 1970-01-01
        • 2022-08-24
        相关资源
        最近更新 更多