Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在ruby中基于一个子数组值生成单独的数组数组_Arrays_Ruby_Ruby On Rails 4.2 - Fatal编程技术网

Arrays 如何在ruby中基于一个子数组值生成单独的数组数组

Arrays 如何在ruby中基于一个子数组值生成单独的数组数组,arrays,ruby,ruby-on-rails-4.2,Arrays,Ruby,Ruby On Rails 4.2,我有一个数组,如下所示: a = [ ["a", "v", 1], ["b", "w", 2], ["c", "x", 1], ["d", "y", 1], ["e", "z", 2], ["f", "one" , 3 ], ["g", "two" , 3 ], ["g", "one" , 4 ], ["f", "one" , 1 ], ["h", "one" , 5 ], ["f", "one" , 4 ], # ... ] 然后,我希

我有一个数组,如下所示:

a = [
      ["a", "v", 1], ["b", "w", 2], ["c", "x", 1], ["d", "y", 1],
      ["e", "z", 2], ["f", "one" , 3 ], ["g", "two" , 3 ], ["g", "one" , 4 ],
      ["f", "one" , 1 ], ["h", "one" , 5 ], ["f", "one" , 4 ],
      # ...
    ]
然后,我希望结果是5个不同的数组

a1 = [ ["a", "v", 1],["c", "x", 1], ["d", "y", 1], ["f", "one" , 1 ] ]
a2 = [ ["b", "w", 2], ["e", "z", 2] ] 
a3 = [ ["f", "one", 3], ["g", "two", 3] ]
a4 = [ ["g", "one", 4], ["f", "one", 4] ]
a5 = [ ["h", "one" , 5 ] ]
# ...
an = []
通过执行下面的代码,我能够对它进行排序

b = a.sort{|c,d|c[2] <=> d[2]}
b=a.sort{| c,d | c[2]d[2]}
如何生成这样的列表

请帮助。提前感谢。

您可以使用:

对于2个以上的值,可以使用:

要访问数组,可以使用
散列[1]
散列[2]
等,也可以将它们分配给变量:

a1, a2, a3, a4, a5 = hash.values_at(1, 2, 3, 4, 5)

a1 #=> [["a", "v", 1], ["c", "x", 1], ["d", "y", 1], ["f", "one", 1]]
a2 #=> [["b", "w", 2], ["e", "z", 2]]
a3 #=> [["f", "one", 3], ["g", "two", 3]]
a4 #=> [["g", "one", 4], ["f", "one", 4]]
a5 #=> [["h", "one", 5]]
您可以使用:

对于2个以上的值,可以使用:

要访问数组,可以使用
散列[1]
散列[2]
等,也可以将它们分配给变量:

a1, a2, a3, a4, a5 = hash.values_at(1, 2, 3, 4, 5)

a1 #=> [["a", "v", 1], ["c", "x", 1], ["d", "y", 1], ["f", "one", 1]]
a2 #=> [["b", "w", 2], ["e", "z", 2]]
a3 #=> [["f", "one", 3], ["g", "two", 3]]
a4 #=> [["g", "one", 4], ["f", "one", 4]]
a5 #=> [["h", "one", 5]]

选择将是更具可读性的选项:

a.select do |v| v.third == 1 end
 => [["a", "v", 1], ["c", "x", 1], ["d", "y", 1]]

选择将是更具可读性的选项:

a.select do |v| v.third == 1 end
 => [["a", "v", 1], ["c", "x", 1], ["d", "y", 1]]

挑剔的读者可能会想,“给定的是
a
的索引,从中计算出
1
”。完美。谢谢@Stefan。挑剔的读者可能会想,“给定的是
a
的索引,从中计算出
1
”。完美。谢谢你@Stefan。