我有一个看起来像这样的数组:
Array_1 = ["A1", "A2", "A3", "A4", "A5", "B1", "B2", "B3", ..., "Z5"]
Run Code Online (Sandbox Code Playgroud)
我想创建的元素的数组Array_1是来找"A5":
Array_2 = ["B1", "B2", "B3", ..., "Z5"]
Run Code Online (Sandbox Code Playgroud)
我有一种丑陋的方式,减去两个数组来创建第三个数组,但我觉得必须有一种优雅的红宝石方式来做一些应该简单的事情.任何帮助都是令人惊讶的.
Array_1 = ["A1", "A2", "A3", "A4", "A5", "B1", "B2", "B3", "Z5"]
Array_1[Array_1.index("A5")+1..-1]
# => ["B1", "B2", "B3", "Z5"]
Run Code Online (Sandbox Code Playgroud)
(我想我们应该首先计算idx = Array_1.index("A5")以确保它是非零的.)
...
另一种方法是使用Ruby的少用触发器操作符:
Array_1.select { |e| e=="A5" .. false ? true : false }[1..-1]
#=> ["B1", "B2", "B3", "Z5"]
Run Code Online (Sandbox Code Playgroud)
表达保持false直到e=="A5"是true,并保持true直到下面的表达式的两个点被true.因此,
Array_1.select { |e| e=="A5" .. false ? true : false }
#=> ["A5", "B1", "B2", "B3", "Z5"]
Run Code Online (Sandbox Code Playgroud)
[1..-1]被添加以返回此数组而没有"A5".
触发器操作符必须是条件表达式的一部分,这就是我们无法写入的原因:
Array_1.select { |e| e=="A5" .. false }[1..-1]
#ArgumentError: bad value for range
Run Code Online (Sandbox Code Playgroud)
(因为e=="A5" .. false被视为正常范围).
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |