0

这很简单,但我找不到任何东西。我有一个要循环的数组,为每个数组提取一个特定属性,然后将这些属性存储在一个新数组中。

基本上:

  • 店铺array2 = [Array1[0].attr, Array1[2].attr, Array1[3].attr]

我有的

<% storedArray = [] %>
<% @data = current_user.data_items %>
       <% @data.each do |data_item| %>
          <% storedArray[data_item.count] = data_item.url_metric.da %>
       <% end %>

更新:

我让它工作,但以一种非常糟糕的方式。建议?

<% array = []; i = 0 %>

   <% @data = current_user.reports[0].data_items %>
   <% @data.each do |data_item| %>
      <% array[i] = data_item.url_metric.da %>
      <% i = i+1 %>
   <% end %>
   <%= array %>
4

2 回答 2

1

查看方法收集

它返回一个新数组,其中包含在源数组循环之后创建的值。在您的问题中,代码将是:

# Get initial array
<% @data_items = current_user.reports[0].data_items %>

# Iterate through original array and return value to new array
<% @array = @data_items.collect do | data_item | %>
    # Process item
    <% data_item.url_metric.da %>
<% end %>

# Now your new array is ready to go.
<%= @array %>
于 2013-07-27T01:13:09.507 回答
0

利用

<% @array= current_user.data_items.map {|data_item| data_item.url_metric.da} %>

您可以通过使用 each 直接使用结果数组,如下所示:

<% current_user.data_items.map {|data_item| data_item.url_metric.da}.each |result| %>
# Do something with the result
<% end %>

有关更多列表操作,请参见http://www.ruby-doc.org/core-2.0/Array.html

于 2013-07-27T04:44:30.037 回答