Ruby Удалить один элемент из массива

Я хочу удалить (только один) элемент по значению из моего массива.

пример:

x = [1,2,3,2]
x.remove(2)


result: x= [1,3]

Но я хочу получить [1,3,2].

спасибо

Ответ 1

Как упоминалось в комментариях @7urkm3n, вы можете использовать x.delete_at для удаления первого события

x.delete_at(x.index 2)

> x = [1,2,3,2]
=> [1, 2, 3, 2] 
> x.delete_at(x.index 2)
=> 2 
> x
=> [1, 3, 2] 

Ответ 2

Вы можете использовать slice!(index, 1). Вы можете получить 1-й индекс элемента, который хотите удалить, используя index(element)

В вашем случае вам просто нужно сделать: x.slice!(x.index(2), 1) (или, как уже упоминалось, delete_at, просто указав индекс)

Ответ 3

Вы можете написать

x = [1,2,3,2]
x.difference([2])
  #=> [1, 3, 2]

где Array#difference, так как я определил его мой ответ здесь. Из-за широкого потенциального применения метода я предложил его добавить в ядро ​​Ruby.

Предположим, что

x = [1,2,3,2,1,2,4,2]

и вы хотели удалить первый 1, первые два 2 и 4. Для этого напишите

x.difference([1,2,2,4])
  #=> [3, 1, 2, 2]

Обратите внимание, что

x.difference([1,2,2,4,4,5])
  #=> [3, 1, 2, 2]

дает тот же результат.

Чтобы удалить последний 1, последние два 2 и и 4, напишите

x.reverse.difference([1,2,2,4]).reverse
  #=> [1, 2, 3, 2]