Ruby rejoint plusieurs tableaux

introduction

Puisqu'un tableau peut avoir un autre tableau sur son élément

[1,2,3,[4,5,6],7,8,9]
Et
[[1,2,3],[4,5,6],[7,8,9]]

Vous pouvez créer un tableau qui ressemble à ceci. Il existe de nombreuses méthodes et opérateurs pour joindre et ajouter des tableaux lorsque des tableaux séparés à l'origine sont combinés en un seul tableau, comme décrit ci-dessus.

Cependant, j'étais confus lorsque je l'ai utilisé de différentes manières. De plus, il semble que l'utilisation soit légèrement différente, j'en ai donc essayé, je vais donc le résumer ici.

1. Méthode push

La méthode push ajoute la valeur spécifiée comme l'un des éléments à la fin du tableau.

a = [1,2,3]
b = [4,5,6],[7,8,9]
c = [10,11,12],[13,14,15]

a.push(b)
=> [1, 2, 3, [[4, 5, 6], [7, 8, 9]]]
b.push(a)
=> [[4, 5, 6], [7, 8, 9], [1, 2, 3]]
b.push(c)
=> [[4, 5, 6], [7, 8, 9], [[10, 11, 12], [13, 14, 15]]]

Même s'il y a plusieurs tableaux à ajouter, cela semble être ** élément ** du tableau récepteur. Ainsi, «b = [4,5,6], [7,8,9]» est ajouté à la fin par «[[4,5,6], [7,8,9]]».

De plus, la méthode «push» est une méthode destructive. La valeur du récepteur change.

a.push(b)
=> [1, 2, 3, [[4, 5, 6], [7, 8, 9]]]

a
=> [1, 2, 3, [[4, 5, 6], [7, 8, 9]]]

2. Opérateur <<

L'opérateur «<<» semble se comporter de la même manière que la méthode «push».

a = [1,2,3]
b = [4,5,6],[7,8,9]
c = [10,11,12],[13,14,15]

a << b
=> [1, 2, 3, [[4, 5, 6], [7, 8, 9]]]
b << a
=> [[4, 5, 6], [7, 8, 9], [1, 2, 3]]
b << c
=> [[4, 5, 6], [7, 8, 9], [[10, 11, 12], [13, 14, 15]]]

c'est le même! Il en va de même en ce qu'il s'agit d'une méthode destructrice.

a << b
=> [1, 2, 3, [[4, 5, 6], [7, 8, 9]]]

a
=> [1, 2, 3, [[4, 5, 6], [7, 8, 9]]]

3. Opérateur +

L'opérateur + ajoute les éléments du tableau à ajouter un par un.

a = [1,2,3]
b = [4,5,6],[7,8,9]
c = [10,11,12],[13,14,15]
d = [-1,-2,-3]

a + b
=> [1, 2, 3, [4, 5, 6], [7, 8, 9]]
b + a
=> [[4, 5, 6], [7, 8, 9], 1, 2, 3]
b + c
=> [[4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]]
a + d
=> [1, 2, 3, -1, -2, -3]

Dans le tableau de ʻa, chaque élément est une valeur numérique, donc la valeur est ajoutée à la fin. Dans le tableau b`, chaque élément est un tableau, il sera donc ajouté à la fin tel quel.

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Si tu veux

[a] + b
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Il semble bon de donner ʻa` lui-même un élément du tableau.

L'opérateur «+» n'apporte aucune modification à la valeur.

a + b
=> [1, 2, 3, [4, 5, 6], [7, 8, 9]]

a
=> [1, 2, 3]

4. méthode concat

La méthode concat se comporte un peu comme l'opérateur` + ʻopérateur.

a = [1,2,3]
b = [4,5,6],[7,8,9]
c = [10,11,12],[13,14,15]
d = [-1,-2,-3]

a.concat(b)
=> [1, 2, 3, [4, 5, 6], [7, 8, 9]]
b.concat(a)
=> [[4, 5, 6], [7, 8, 9], 1, 2, 3]
b.concat(c)
=> [[4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]]
a.concat(d)
=> [1, 2, 3, -1, -2, -3]

Est le même.

[a].concat(b)
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

La méthode de le traiter comme un élément d'un tableau est également efficace ici.

Cependant, la méthode «concat» est destructrice.

a.concat(b)
=> [1, 2, 3, [4, 5, 6], [7, 8, 9]]

a
=> [1, 2, 3, [4, 5, 6], [7, 8, 9]]

C'est la différence avec l'opérateur «+».

Bonus. Méthode ʻUnshift`

La méthode ʻunshift est très similaire à la méthode push`.

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Si vous voulez créer cette forme, j'ai posté la méthode avec l'opérateur + etc., mais vous pouvez également la réaliser en utilisant la méthode ʻunshift`.

a = [1,2,3]
b = [4,5,6],[7,8,9]

b.unshift(a)
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

à la fin

Je n'ai pas trouvé d'article qui résume comment combiner des tableaux tels qu'ils sont, alors j'ai essayé de les résumer moi-même. Veuillez me faire savoir si vous avez des erreurs.

Recommended Posts

Ruby rejoint plusieurs tableaux
À propos des tableaux Ruby
[Ruby] Échapper à plusieurs boucles [Nest]
[Débutant] Divers traitements itératifs pour les tableaux Ruby