Подтвердить что ты не робот

Как удалить все элементы, которые удовлетворяют условию в массиве в Ruby?

Как я могу реализовать это в Ruby? Есть ли какая-нибудь одна линия кодовой техники? Скажем, я хочу избавиться от всех элементов, которые меньше 3 целых массивов.

4b9b3361

Ответ 1

Вы можете использовать либо new_array = array.reject {|x| x < 3} (reject возвращает новый массив), либо array.reject! {|x| x < 3} (reject! aka delete_if изменяет массив на месте).

Также существует (несколько более общий) метод select, который действует как reject, за исключением того, что вы указываете условие для сохранения элементов, а не для их отклонения (т.е. чтобы избавиться от элементов меньше 3, d используйте new_array = array.select {|x| x >= 3}).

Ответ 2

Возможно, стоит отметить, что

array.reject! {|x| x < 3}

и

array.delete_if {|x| x < 3}

То же самое, но

array.reject {|x| x < 3}

По-прежнему будет возвращать тот же результат, но не будет изменять "массив".

Ответ 3

  a = [ "a", "b", "c" ]
  a.delete_if {|x| x >= "b" }   #=> ["a"]

Ответ 4

Это отлично подходит для чисел и букв в алфавитном порядке. их значения сравниваются, что, если условия изменяются?

array = ["Type", ": Jointed", "Axes", ": 6", "Reach", ": 951 mm", "Capacity", ": 6 Kg", "Uses", ": ", "Arc welding, material handling, machine loading, application", "This particular unit is in excellent condition with under 700 hours."]

Нам нужно удалить все элементы после значения "Использовать" Пример:

array = ["Type", ": Jointed", "Axes", ": 6", "Reach", ": 951 mm", "Capacity", ": 6 Kg"]

Итак, это не работает (он просто удаляет один элемент):

array.delete_if {|x| x >= "Uses" }
["Type", ": Jointed", "Axes", ": 6", "Reach", ": 951 mm", "Capacity", ": 6 Kg", ": ", "Arc welding, material handling, machine loading, application", "This particular unit is in excellent condition with under 700 hours."]