Ruby で配列を別の配列に追加して、多次元の結果にならないようにするにはどうすればよいですか? 質問する

Ruby で配列を別の配列に追加して、多次元の結果にならないようにするにはどうすればよいですか? 質問する

私は試した:

somearray = ["some", "thing"]
anotherarray = ["another", "thing"]
somearray.push(anotherarray.flatten!)

私は予想した

["some", "thing", "another", "thing"]

しかし

["some", "thing", nil]

ベストアンサー1

実行可能なアイデアはありますが、 の#flatten!位置が間違っています。 はレシーバを平らにしてしまうので、[1, 2, ['foo', 'bar']]に変換するために使用できます[1,2,'foo','bar']

おそらくいくつかのアプローチを忘れていると思いますが、連結することができます:

a1.concat a2
a1 + a2              # creates a new array, as does a1 += a2

または先頭/末尾に追加:

a1.push(*a2)         # note the asterisk
a2.unshift(*a1)      # note the asterisk, and that a2 is the receiver

またはスプライス

a1[a1.length, 0] = a2
a1[a1.length..0] = a2
a1.insert(a1.length, *a2)

または追加してフラット化します:

(a1 << a2).flatten!  # a call to #flatten instead would return a new array

おすすめ記事