2013-05-27 2 views
0

Я пытаюсь создать массив из другого массива + переменную count.пары значений цикла цикла Rails

Array1 = [100,101,102] 
count = 0 

Я хочу, чтобы результат NewArray = [ [0,100],[1,101],[2,102] ]

Я пробовал так много различных петель и структуры, но не могу получить его.

Пример:

<% @daArray.each do |da| %> 
     <%= "["+da.to_s+","+count.to_s+"]" %> 
     <% if count != @daArray.count-1 %> 
      <%= ","%> 
     <% end %> 
     <% count += 1 %> 
    <% end %> 
+0

так много? Не могли бы вы отправить пару? –

+0

, нам нужно увидеть попытку помочь вам – Senjai

+0

, обновленный на примере. Благодаря! Это выводит его на экран, но я знаю, что он очень плохо написан и на самом деле не может использоваться для сброса в jquery для создания графика (с использованием драгоценного камня, который я использую) –

ответ

1

Это делает то, что вы хотите:

ary = [100,101,102] 
upper_range = ary.size - 1 # Your "count" 
new_ary = (0..upper_range).zip(ary) # "zip" together the two 
new_ary # => [[0, 100], [1, 101], [2, 102]] 

Смотрите также Array#zip documentation

Другой способ достижения того же результата:

count = -1 
ary.map do |el| 
    count += 1 
    [count, el] 
end 
0

Чтобы получить массив в форме, которую вы хотите, вы можете использовать each_with_index, который займет блок. Аргументы - это значение из массива и индекса.

your_array.each_with_index.map { |value, i| [i, value] } 

Чтобы вывести объект массива в нотации массива JavaScript, вы можете просто преобразовать его в формат JSON:

your_array.to_json 

принять your_array, который выглядит как [100, 101, 102] и преобразовать его непосредственно в строку для вставки в JavaScript, просто объединить два:

<%= your_array.each_with_index.map { |value, i| [i, value] }.to_json %> 
0
arr = [] 
[100,101,102].each_with_index{|val, index| arr << [index, val]} 
Смежные вопросы