草庐IT

mysql - 在数组上过滤具有列条件的行

全部标签

Ruby 从数组中删除重复的对象

我无法使用传统的Ruby方法从下面的数组user_list中删除所有重复对象,从而获得预期的结果。有解决这个问题的聪明方法吗?users=[]user_list.eachdo|u|user=User.find_by_id(u.user_id)users 最佳答案 这个怎么样?users=User.find(user_list.map(&:user_id).uniq)这具有作为一个数据库调用而不是user_list.size数据库调用的额外好处。 关于Ruby从数组中删除重复的对象,我们在

Ruby:如何将条件插入字符串连接

在字符串连接中,是否可以直接在语句中包含条件?在下面的示例中,我希望仅当dear列表不为空时才连接"mydear"。dear=""string="hello"+"mydear"unlessdear.empty?+",goodmorning!"但是结果报错:undefinedmethod'+'fortrue我知道另一种方法是在这条语句之前定义一个额外的变量,但我想避免这种情况。 最佳答案 使用插值而不是连接更容易和更具可读性:dear=""string="hello#{'mydear'unlessdear.empty?},goodmo

ruby - 如果正则表达式不匹配,则从数组中删除元素

有办法吗?我有一个数组:["file_1.jar","file_2.jar","file_3.pom"]我只想保留“file_3.pom”,我想做的是这样的:array.drop_while{|f|/.pom/.match(f)}但是通过这种方式,我将所有内容都保存在数组中,但“file_3.pom”有没有办法做类似“not_match”的事情?我找到了这些:f!~/.pom/#=>leavesallelementsinarray或f!~/*.pom/#=>leavesallelementsinarray但这些都没有返回我期望的结果。 最佳答案

ruby - 更快的 n 选择 k 来组合数组 ruby

在尝试解决“网格上的路径”问题时,我编写了代码defpaths(n,k)p=(1..n+k).to_ap.combination(n).to_a.sizeend代码工作正常,例如ifn==8andk==2代码返回45,这是正确的路径数。但是,当使用较大的数字时,代码非常慢,我正在努力想出如何加快这个过程。 最佳答案 与其构建组合数组只是为了计算它,不如编写function定义组合的数量。我敢肯定还有包含此功能和许多其他组合函数的gem。请注意,我使用的是gemDistribution对于Math.factorial方法,但这是另一种

ruby - 从任意哈希初始化 Ruby 类,但仅具有匹配访问器的键

有没有一种简单的方法可以列出已在Ruby类中设置的访问器/读取器?classTestattr_reader:one,:twodefinitialize#DosomethingenddefthreeendendTest.new=>[one,two]我真正想做的是允许初始化接受具有任意数量属性的哈希,但只提交已经定义了读者的那些。像这样的东西:definitialize(opts)opts.delete_if{|opt,val|notthe_list_of_readers.include?(opt)}.eachdo|opt,val|eval("@#{opt}=\"#{val}\"")end

ruby - 在 Ruby 中添加到数组中的每个元素

有没有办法在数组的每个元素前加上一些东西。例如:file=File.new(my_file,'r')header=IO.readlines(my_file)[1]#headerlookslike[1,2,3]#Prependeachelelementofheaderwithfilename,somethinglikeheader.prepend(filename+".")#headerlookslike[filename.1,filename.2,filename.3] 最佳答案 您想使用map:["foo","bar","baz"

要散列的 Ruby 数组

我有以下数组:myarray=[['usa','primary','john'],['france','primary','lira'],['usa','secondary','steve'],['germany','primary','jeff'],['france','secondary','ben']]我想将它转换成一个散列数组,如下所示:[{:country=>'usa',:primary=>'john',:secondary=>'steve'},{:country=>'france',:primary=>'lira',:secondary=>'ben'},{:country=

ruby-on-rails - find_all 数组中符合条件的元素?

我有一个哈希条目数组,并希望根据传递给函数的参数进行过滤。如果散列中有三个值,A、B和C,我想做类似的事情:data=[{A:'a1',B:'b1',C:'c1'},{A:'a1',B:'b2',C:'c1'},{A:'a1',B:'b2',C:'c2'},{A:'a2',B:'b1',C:'c1'},{A:'a2',B:'b2',C:'c1'}]data.find_all{|d|d[:A].include?params[:A]}.find_all{|d|d[:B].include?params[:B]}.find_all{|d|d[:C].include?params[:C]}找到所

ruby - 按键数组中的顺序对 Ruby 哈希进行排序

我有一个散列:sample={bar:200,foo:100,baz:100}如何使用sort_order中的键顺序对sample进行排序:sort_order=[:foo,:bar,:baz,:qux,:quux]预期结果:sample#=>{foo:100,bar:200,baz:100}我能想到的就是new_hash={}sort_order.each{|k|new_hash[k]=sample[k]unlesssample[k].nil?}sample=new_hash必须有更好的方法。提示?不应该出现没有值的键,即键的数量保持不变,SortHashKeysbasedonord

ruby - 从特定索引开始迭代数组

我想从特定索引开始遍历数组。我该怎么做?myj.eachdo|temp|...end 最佳答案 执行以下操作:your_array[your_index..-1].eachdo|temp|###end 关于ruby-从特定索引开始迭代数组,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/44151758/