Tag: arrays

ruby中的树状结构与没有gem的数组格式的父子?

我有一个数组,其中包含这样的项目列表 arr = [ {:id=>1, :title=>”A”, :parent_id=>nil}, {:id=>2, :title=>”B”, :parent_id=>nil}, {:id=>3, :title=>”A1″, :parent_id=>1}, {:id=>4, :title=>”A2″, :parent_id=>1}, {:id=>5, :title=>”A11″, :parent_id=>3}, {:id=>6, :title=>”12″, :parent_id=>3}, {:id=>7, :title=>”A2=121″, :parent_id=>6}, {:id=>8, :title=>”A21″, :parent_id=>4}, {:id=>9, :title=>”B11″, :parent_id=>2}, {:id=>10, :title=>”B12″, :parent_id=>2}, …] 如果parent_id为nil,那么它应该是父节点,如果parent_id不是nil,则它应该在特定父节点下。 基于id和parent_id,我想提供这样的响应: -A -A1 -A11 -A12 -A123 -A2 -A21 -B -B1 -B11 -B12 我怎么能产生上面提到的回应?

在Ruby Array中收集重复项的最快/一行方式?

像这样转换数组的最快/单线方式是什么: [1, 1, 1, 1, 2, 2, 3, 5, 5, 5, 8, 13, 21, 21, 21] …进入像这样的对象数组: [{1 => 4}, {2 => 2}, {3 => 1}, {5 => 3}, {8 => 1}, {13 => 1}, {21 => 3}]

使用ERB打印arrays元素

我正在尝试将我控制器中定义的简单数组打印到我的视图中,每个元素都有一个新行。 但它正在做的是将整个arrays打印在一条线上。 这是我的控制器: class TodosController < ApplicationController def index @todo_array = [ "Buy Milk", "Buy Soap", "Pay bill", "Draw Money" ] end end 这是我的观点: 这是结果: [“Buy Milk”, “Buy Soap”, “Pay bill”, “Draw Money”]

使用Ruby,如何将所有数组值转换为给定类型?

我需要将fixnums转换为字符串。 我的解决方案是: arr.map {|a| a.to_s} 有没有更好的办法?

语法错误,意外的tIVAR,期待’(’

使用以下代码行,我试图将一个元组插入@test_results数组中: @test_object.@test_results << [@u, @m, @r, @p] 但它引发了以下错误: unexpected tIVAR, expecting ‘(‘ (SyntaxError) 为什么Ruby期待’(’?

Ruby – 生成所有两个字母的单词

我正在尝试生成一个包含所有两个字母组合的数组。 什么是生成它的最佳方式。 有人可以帮帮我吗?

确定一个数组是否包含另一个数组的所有元素

我需要告诉一个数组是否包含具有重复项的另一个数组的所有元素。 [1,2,3].contains_all? [1,2] #=> true [1,2,3].contains_all? [1,2,2] #=> false (this is where (a1-a2).empty? fails) [2,1,2,3].contains_all? [1,2,2] #=> true 因此第一个数组必须包含第二个数组中每个唯一元素的数量或相等数量。 对于那些使用数组作为集合的人来说 , 这个问题可以解决它 ,但我需要控制重复数据。 更新:基准 在Ruby 1.9.3p194上 def bench puts Benchmark.measure { 10000.times do [1,2,3].contains_all? [1,2] [1,2,3].contains_all? [1,2,2] [2,1,2,3].contains_all? [1,2,2] end } end 结果是: Rohit 0.100000 0.000000 0.100000 ( 0.104486) Chris 0.040000 0.000000 0.040000 ( 0.040178) […]

删除Ruby数组中相邻的相同元素?

Ruby 1.8.6 我有一个包含数值的数组。 我想减少它,使得相同值的序列减少到该值的单个实例。 所以我想要 a = [1, 1, 1, 2, 2, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3] 减少到 [1, 2, 3, 2, 3] 如您所见, Array#uniq在这种情况下不起作用。 我有以下,有效: (a.size – 1).downto(1) { |i| a[i] = nil if a[i – 1] == a[i] } 任何人都可以想出一些不那么难看的东西吗?

在Ruby中乘以两个数组并获得乘积值之和的有效方法是什么?

在Ruby中乘以两个数组并获得乘法值之和的有效方法是什么? 我在Ruby中有两个数组: array_A = [1, 2, 1, 4, 5, 3, 2, 6, 5, 8, 9] array_B = [3, 2, 4, 2, 5, 1, 3, 3, 7, 5, 4] 我的目标是得到array_A * array_B的和值,即1 * 3 + 2 * 2 + 1 * 4 + … + 8 * 5 + 9 * 4。 因为我需要在我的应用程序中计算它们数百万次,所以进行此类计算的最有效方法是什么? 它就像一个矩阵计算:1 * N矩阵* […]

如何替换数组元素?

如何替换数组中的元素? a = [1,2,3,4,5] 我需要用[11,22,33,44].flatten!替换5 [11,22,33,44].flatten! 现在变成了 a = [1,2,3,4,11,22,33,44]