Я могу легко добавить один элемент в существующий массив:
arr = [1]
arr << 2
# => [1, 2]
Как добавить несколько элементов в мой массив?
Я хотел бы сделать что-то вроде arr << [2, 3]
, но это добавляет массив в мой массив #=> [1, [2, 3]]
Я могу легко добавить один элемент в существующий массив:
arr = [1]
arr << 2
# => [1, 2]
Как добавить несколько элементов в мой массив?
Я хотел бы сделать что-то вроде arr << [2, 3]
, но это добавляет массив в мой массив #=> [1, [2, 3]]
Используя оператор +=
:
arr = [1]
arr += [2, 3]
arr
# => [1, 2, 3]
.push
arr = [1]
arr.push(2, 3)
# => [1, 2, 3]
Вы также можете .push()
все элементы другого массива
second_arr = [2, 3]
arr.push(*second_arr)
# => [1, 2, 3]
Но обратите внимание! без *
это добавит second_array
к arr
.
arr.push(second_arr)
# => [1, [2, 3]]
Низшая альтернатива
Вы также можете связать <<
звонки:
arr = [1]
arr << 2 << 3
# => [1, 2, 3]
Вы также можете использовать ниже, используя Array#concat
:
arr = [1]
arr.concat([2, 3]) # => [1, 2, 3]
Существует несколько способов достижения этого:
array = [1, 2]
array += [3, 4] # => [1, 2, 3, 4]
# push: put the element at the end of the array
array.push([5, 6]) # => [1, 2, 3, 4, [5, 6]]
array.push(*[7, 8]) # => [1, 2, 3, 4, [5, 6], 7, 8]
array << 9 # => [1, 2, 3, 4, [5, 6], 7, 8, 9]
# unshift: put the element at the beginning of the array:
array.unshift(0) #=> [0, 1, 2, 3, 4, [5, 6], 7, 8, 9]
Некоторые ссылки:
просто используйте .flatten
например, если у вас есть этот массив
array = [1,2,3,4,5,6]
и вы делаете это
array.push([123,456,789])
array.push([["abc","def"],["ghi","jkl"]])
ваша строка будет выглядеть примерно так:
array = [[1,2,3,4,5,6],[123,456,789],[["abc","def"],["ghi","jkl"]]]
все, что вам нужно сделать, это
array.flatten!
и теперь вашему массиву понравится
array = [1,2,3,4,5,6,123,456,789,"abc","def","ghi","jkl"]
Еще одно: для создания массива с элементами n-times вы можете использовать splat (звездочка AKA, *
):
arr = [true] * 4 # => [true, true, true, true]
Вы также можете использовать знак для повторения нескольких элементов:
arr = [123,'abc'] * 3 # => [123,'abc',123,'abc',123,'abc']
Конечно, вы можете использовать любые операторы массива с такими, как +:
arr = [true] * 3 + [false] # => [true, true, true, false]
Я использую это совместно с #sample
для генерации случайных взвешенных результатов:
arr.sample # => true 3 out of 4 times
Использование Array # insert может добавить массив в любую позицию:
a = [1, 2, 3]
b = [4,5,6]
b.insert(0, *a)
=> [1, 2, 3, 4, 5, 6]