Ruby从数组中删除几个元素

时间:2014-04-24 19:04:05

标签: ruby arrays

我有一个填充了几个日期的数组

 arry = ["06-01-2014", "07-04-2014", "14-01-2014"
         "14-04-2014", "16-01-2014" "27-03-2014",
         "30-12-2013", "31-03-2014", "27-02-2014"]

我想删除元素6及以上最好有2个不同的数组。

这可能吗?

3 个答案:

答案 0 :(得分:3)

随意接受@ JanDvorak的答案,但你也可以这样做

arry = ["06-01-2014", "07-04-2014", "14-01-2014","14-04-2014", "16-01-2014", "27-03-2014","30-12-2013", "31-03-2014", "27-02-2014"]
first_five = arry.shift(5)
#=> ["06-01-2014", "07-04-2014", "14-01-2014", "14-04-2014", "16-01-2014"]
arry 
#=> ["27-03-2014","30-12-2013", "31-03-2014", "27-02-2014"]

或非破坏性(维持arry

arry = ["06-01-2014", "07-04-2014", "14-01-2014","14-04-2014", "16-01-2014", "27-03-2014","30-12-2013", "31-03-2014", "27-02-2014"]
first_five,rest = arry.partition.with_index{|a,i| i < 5}
first_five
#=> ["06-01-2014", "07-04-2014", "14-01-2014", "14-04-2014", "16-01-2014"]
rest
#=> ["27-03-2014","30-12-2013", "31-03-2014", "27-02-2014"]
arry
#=> ["06-01-2014", "07-04-2014", "14-01-2014", "14-04-2014", "16-01-2014","27-03-2014", "30-12-2013", "31-03-2014", "27-02-2014"]

答案 1 :(得分:1)

另一种方法是使用索引

删除
arry.delete_at(5)

正如@Jan Dvorak所提到的,您可以使用

根据索引位置拆分它们
arry[0..5] and arry[5..-1]

答案 2 :(得分:0)

这是另一种(非破坏性)方式,但没有什么比@Jan建议的更简单和清晰。

arr = ["06-01-2014", "07-04-2014", "14-01-2014",
       "14-04-2014", "16-01-2014", "27-03-2014",
       "30-12-2013", "31-03-2014", "27-02-2014"]

[arr.first(5), arr.drop(5)]
  #=> [["06-01-2014", "07-04-2014", "14-01-2014", "14-04-2014", "16-01-2014"],
  #    ["27-03-2014", "30-12-2013", "31-03-2014", "27-02-2014"]]