У меня есть массив Ruby [1, 4]
. Я хочу вставить еще один массив [2, 3]
в середине, чтобы он стал [1, 2, 3, 4]
. Я могу достичь этого с помощью [1, 4].insert(1, [2, 3]).flatten
, но есть ли лучший способ сделать это?Как вставить массив в середине массива?
ответ
Вы можете сделать это следующим образом.
[1,4].insert(1,*[2,3])
Метод insert()
обрабатывает несколько параметров. Поэтому вы можете преобразовать свой массив в параметры с помощью оператора splat *
.
Все ответы, которые я получил, замечательные, но я думаю, что ваш самый легкий для чтения. Благодаря! – Andree
Возможно, стоит отметить, что '[1,4] .insert (2, * [2,3]) # => [1,4,2,3]', что позволяет вставлять элементы второго массива после последний элемент первого массива. –
def insert_array receiver, pos, other
receiver.insert pos, *other
end
insert_array [1, 4], 1, [2, 3]
#⇒ [1, 2, 3, 4]
или выше может быть достигнуто за счет monkeypatching в Array
класс:
class Array
def insert_array pos, other
insert pos, *other
end
end
Я считаю, что это достаточно короткие обозначения, чтобы иметь какой-либо дополнительный синтаксис сахара. Кстати, уплощение результат не является хорошей идеей, так как это приведет к повреждению входного массива, уже имеющие массивы внутри:
[1, [4,5]].insert 1, *[2,3]
#⇒ [1, 2, 3, [4,5]]
но:
[1, [4,5]].insert(1, [2,3]).flatten
#⇒ [1, 2, 3, 4, 5]
Одна из форм метода Array#[]= принимает два аргумента: index
и length
. Когда последнее равно нулю, а rvalue является массивом, метод вставляет элементы rvalue в приемник до элемент по данному индексу (и возвращает rvalue). Поэтому, чтобы вставить элементы:
b = [2,3]
в:
a = [1,4]
до элемента с индексом 1
(4
), мы пишем:
a[1,0] = b
#=> [2,3]
a #=> [1,2,3,4]
Примечание:
a=[1,4]
a[0,0] = [2,3]
a #=> [2,3,1,4]
a=[1,4]
a[2,0] = [2,3]
a #=> [1,4,2,3]
a=[1,4]
a[4,0] = [2,3]
a #=> [1,4,nil,nil,2,3]]
, поэтому местоположение вставки находится перед данным индексом.
Это очень краткий способ вставки элементов другого массива. Может быть, вы должны добавить некоторое объяснение (и некоторые пробелы). – Stefan
Мой вариант без массива # вставки метода
array = [1,2,3,6,7,8]
new_array = [4,5]
array[0...array.size/2] + new_array + array[array.size/2..-1]
- 1. Как вставить элемент в массив в середине
- 2. Как realloc() в середине массива?
- 3. Вставить в середине списка
- 4. Вставить массив массива в codeigniter
- 5. Как вставить строку массива в другой массив
- 6. Как вставить массив в определенный индекс массива?
- 7. Как вставить массив в конец многомерного массива?
- 8. Вставить массив внутри другого массива
- 9. Удаление элемента в середине массива?
- 10. Как вставить массив внутри другого массива?
- 11. Как вставить QWidgets в середине макета?
- 12. как вставить строку в середине таблицы Google
- 13. Как вставить массив в массив
- 14. Как вставить php-массив в другой массив
- 15. C# байт-массив - запись в середине
- 16. Вставить элемент в массив
- 17. Как вставить хэш в массив
- 18. Вставить в массив
- 19. Вставить Массив Массив Perl
- 20. PHP Вставить массив в многомерный массив с помощью значения массива
- 21. C Динамический массив Вставка в середине
- 22. Как вставить объекты в массив?
- 23. Как вставить новый элемент массива в родительский массив в foreach
- 24. Вставить значение в массив
- 25. Как вставить в массив? C++
- 26. Вставить в отсортированный массив
- 27. PHP Вставить в массив
- 28. Вставить новый элемент в массив в любую позицию в PHP
- 29. Вставить объект в массив
- 30. Вставить элемент в массив
Что именно означает «в середине»? Учитывая вход '[1,1,4,4]', следует ли '[2,3]' вставлять туда? – mudasobwa
«Где» должна быть переменная. Я хочу иметь возможность вставлять в начале или в любом месте посередине, но не в конец (чего легко достичь с помощью массива array1 + array2). – Andree