Ответ 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]
Я хочу удалить (только один) элемент по значению из моего массива.
пример:
x = [1,2,3,2]
x.remove(2)
result: x= [1,3]
Но я хочу получить [1,3,2]
.
спасибо
Как упоминалось в комментариях @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]
Вы можете использовать slice!(index, 1)
. Вы можете получить 1-й индекс элемента, который хотите удалить, используя index(element)
В вашем случае вам просто нужно сделать: x.slice!(x.index(2), 1)
(или, как уже упоминалось, delete_at
, просто указав индекс)
Вы можете написать
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]