Как я могу реализовать это в Ruby? Есть ли какая-нибудь одна линия кодовой техники? Скажем, я хочу избавиться от всех элементов, которые меньше 3 целых массивов.
Как удалить все элементы, которые удовлетворяют условию в массиве в Ruby?
Ответ 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."]