2014-10-21 3 views
1

У меня есть массив:Заменить метод на массив

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

Я хочу, чтобы заменить все 2 с с 'x' и не может это сделать. Я пробовал:

  • 1-й попытку: array.select{|num| num == 2? num = 'x' : num}
  • 2-й попытку: array.select{|num| num == 2}.replace(['x'])

Я делаю это сложнее, чем это.

+0

Что ваш вопрос? – sawa

+0

он должен был заменить все 2s в массиве «x» – user3007294

ответ

3

Я хотел бы использовать:

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

array.map!{ |e| e == 2 ? 'x' : e } 
array # => [1, "x", 3, 4, 5, "x", 6, 7, "x", 8, 9, "x", 10] 

map! меняет array, но если вы не хотите, чтобы изменить сам массив:

foo = array.map{ |e| e == 2 ? 'x' : e } 
array # => [1, 2, 3, 4, 5, 2, 6, 7, 2, 8, 9, 2, 10] 
foo # => [1, "x", 3, 4, 5, "x", 6, 7, "x", 8, 9, "x", 10] 
+0

человек, я чувствую себя идиотом ... спасибо Tin Man! У меня еще есть 9 минут на accept ... – user3007294

+0

Лично я предпочитаю условное выражение над условным оператором: 'array.map {| e | если e == 2, то 'x' else e end} ' –

Смежные вопросы