Каков наиболее эффективный способ получить оставшийся массив после удаления элемента из массива? - PullRequest
1 голос
/ 06 марта 2011

Array.delete метод возвращает удаленный элемент.

Но что, если мне нужен оставшийся массив (без изменения исходного)?

Ну, это один из вариантов:

%w(hello stack overflow !).delete_if{|x| x == 'overflow'}
# => ["hello", "stack", "!"]

Интересно, есть ли более приятный способ, что-то вроде:

%w(hello stack overflow !).<something>('overflow')

Есть идеи?

Ответы [ 4 ]

6 голосов
/ 06 марта 2011
%w(hello stack overflow !) - %w(overflow)
=> ["hello", "stack", "!"]
2 голосов
/ 06 марта 2011

Было бы

%w(hello stack overflow !).reject {|x| x == 'overflow'}

Это сохранит массив для вас и удалит только строку, в которой он равен 'overflow'

1 голос
/ 06 марта 2011

Один из способов будет выглядеть так:

newarray = old_array.select {|item| item != "overflow"}
0 голосов
/ 06 марта 2011
irb(main):001:0> x=%w(hello stack)
=> ["hello", "stack"]
irb(main):002:0> x.delete('stack')
=> "stack"
irb(main):003:0> x
=> ["hello"]

Итак, используйте метод delete.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...