2014-01-17 3 views
0

Если я следующий arr = [13,12,31,31] Теперь, я хочу запихнуть в другой набор чисел, как 12,13,54,32Как удалить внешний массив из вложенного массива?

Так что я могу сделать arr << [12,13,54,32], но теперь у меня есть [13,12,31,31,[12,13,54,32]]

Так как я могу удалить внешний массив? arr = arr.popиногда работает, но я предполагаю, что существует лучший способ. Пожалуйста, просветите.

+3

'обр << [12,13,54,32]' приведет к ' [13, 12, 31, 31, [12, 13, 54, 32]] ', а не' [[13,12,31,31,12,13,54,32]] '. Это просто опечатка? – matt

+0

@matt исправил эту опечатку спасибо! – fyz

ответ

4

Не используйте <<, используйте +

arr = [13,12,31,31] 

arr += [12,13,54,32] 

# arr => [13,12,31,31,12,13,54,32] 
+2

Или ['concat'] (http://ruby-doc.org/core-2.1.0/Array.html#method-i-concat), чтобы избежать создания нового массива. – matt

+0

'+ =' отлично работает. Чистое решение, на мой взгляд. Благодарю. – fyz

2

У вас есть пара вариантов. Вы можете присоединиться к своим массивам с помощью оператора + и не иметь дело с внешним массивом. Если у вас есть внешний массив и вы хотите сгладить его, просто вызовите flatten на массив. Как указано в комментариях выше, вы также можете использовать concat.

# Creates a new array 
[13,12,31,31] + [12,13,54,32] 
=> [13, 12, 31, 31, 12, 13, 54, 32] 

# Creates a new array, unless you use flatten! 
[13, 12, 31, 31, [12, 13, 54, 32]].flatten 
=> [13, 12, 31, 31, 12, 13, 54, 32] 

# Modifies the original array 
[13,12,31,31].concat([12,13,54,32]) 
=> [13, 12, 31, 31, 12, 13, 54, 32] 
3

Вы должны использовать Array#flatten

[[13,12,31,31,12,13,54,32]].flatten # => [13, 12, 31, 31, 12, 13, 54, 32] 
Смежные вопросы