【问题标题】:Reposition an element in an Array重新定位数组中的元素
【发布时间】:2013-04-23 12:39:09
【问题描述】:

说我有...

arr = ["a", "b", "c"]

...我想在“b”和“c”之间移动“a”。 我目前有

arr.delete("a")
arr.insert(2, "a")

我可以一次操作吗?

谢谢

【问题讨论】:

  • 它必须就位吗?为什么?

标签: ruby arrays ruby-1.8.7


【解决方案1】:

你可以使用并行赋值:

arr[0], arr[1] = arr[1], arr[0]
=> ["b", "a"]
arr
=> ["b", "a", "c"]

【讨论】:

    【解决方案2】:

    您无需重复"a"。将它们合二为一:

    arr.insert(2, arr.delete("a"))
    

    【讨论】:

    • 谢谢!这样就可以了。
    【解决方案3】:

    如果你想在“b”和“c”之间移动“a”,那么你应该这样做:

    arr.insert(1, arr.delete_at(0))
    

    ※使用.delete_at 而不是.delete,因为您的数组中可能有多个'a'

    【讨论】:

      【解决方案4】:

      在 b 之后插入 a,无论它们在数组中的什么位置:

      arr.insert(arr.index("b"), arr.delete_at(arr.index("a")))
      => ["b", "a", "c"]
      

      你也可以这样做:

       arr[arr.index("a")], arr[arr.index("b")] = "b","a"
      

      【讨论】:

        【解决方案5】:

        使用Array#shuffle!

        arr = [ "a","b","c" ] 
        arr.shuffle! until arr[1] == 'a' && arr[0]=='b'
        p arr #=> ["b", "a", "c"]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-24
          • 2019-09-02
          • 1970-01-01
          • 1970-01-01
          • 2020-02-18
          • 2022-01-19
          • 1970-01-01
          • 2018-10-25
          相关资源
          最近更新 更多