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]
Ответ 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]