Rails循环值对

时间:2013-05-27 00:39:13

标签: ruby-on-rails arrays loops

我正在尝试从另一个数组创建一个数组+一个计数变量。

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 %>

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 %>

答案 2 :(得分:0)

arr = []
[100,101,102].each_with_index{|val, index| arr << [index, val]}