0

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

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

3 回答 3

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 文档

实现相同结果的另一种方法:

count = -1
ary.map do |el| 
  count += 1
  [count, el] 
end
于 2013-05-27T00:58:53.897 回答
0

要以您想要的形式获取数组,您可以使用each_with_indexwhich will take a block。参数是数组和索引中的值。

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 %>
于 2013-05-27T01:16:47.773 回答
0
arr = []
[100,101,102].each_with_index{|val, index| arr << [index, val]}
于 2013-05-27T05:37:41.900 回答