Question Comment ajouter plusieurs éléments à un tableau?


Je peux facilement ajouter un élément à un tableau existant:

arr = [1]
arr << 2
# => [1, 2]

Comment pourrais-je ajouter plusieurs éléments à mon tableau?

Je voudrais faire quelque chose comme arr << [2, 3], bien que cela ajoute un tableau à mon tableau #=> [1, [2, 3]]


35
2017-12-19 15:56


origine


Réponses:


En utilisant += opérateur:

arr = [1]
arr += [2, 3]
arr
# => [1, 2, 3]

47
2017-12-19 15:58



Après quelques recherches, j'ai trouvé deux façons de le faire:

arr = [1]

arr.push(2, 3)
arr << 2 << 3
# => [1, 2, 3]

Les deux renvoient le tableau souhaité.


19
2017-12-19 15:56



Vous pouvez faire aussi comme ci-dessous en utilisant Array#concat:

arr = [1]
arr.concat([2, 3]) # => [1, 2, 3]

15
2017-12-19 15:58



Il existe plusieurs méthodes pour y parvenir:

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]

Quelques liens:


6
2017-12-19 16:05



juste utiliser .flatten

par exemple si vous avez ce tableau

array = [1,2,3,4,5,6]

et tu fais ça

array.push([123,456,789])
array.push([["abc","def"],["ghi","jkl"]])

votre chaîne ressemblerait à quelque chose comme

array = [[1,2,3,4,5,6],[123,456,789],[["abc","def"],["ghi","jkl"]]]

tout ce que vous devez faire est

array.flatten!

et maintenant votre tableau aimerait ça

array = [1,2,3,4,5,6,123,456,789,"abc","def","ghi","jkl"]

0
2017-12-19 16:06



Un de plus, pour construire un tableau avec des éléments n-fois, vous pouvez utiliser le splat (astérisque AKA, *):

arr = [true] * 4           # => [true, true, true, true]

Vous pouvez également utiliser le splat pour répéter plusieurs éléments:

arr = [123,'abc'] * 3      # => [123,'abc',123,'abc',123,'abc']

Bien sûr, vous pouvez utiliser n'importe quel opérateur de tableau avec cela, tel que:

arr = [true] * 3 + [false] # => [true, true, true, false]

Je l'utilise en conjonction avec #sample générer des résultats pondérés au hasard:

arr.sample                 # => true 3 out of 4 times

0
2018-06-04 15:24



Utilisation Array # insert peut ajouter un tableau à n'importe quelle position:

a = [1, 2, 3]
b = [4,5,6]
b.insert(0, *a)
=> [1, 2, 3, 4, 5, 6]

0
2018-04-12 14:34