相关疑难解决方法(0)

参数化数组#uniq(即uniq_by)

如果不是从数组中删除重复元素,我想删除具有共同特定属性的元素,该怎么办?

具体来说,我想从具有重复"精华"的数组中删除所有字符串,其中精华定义如下:

class String
  def essence
    downcase.gsub('&', 'and').gsub(/[^a-z0-9]/, '')
  end
end
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

['a', 'A', 'b'].uniq_by(&:essence)
# => ['a', 'b'] (or ['A', 'b']; I don't really care)
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

ruby arrays

3
推荐指数
1
解决办法
3887
查看次数

如何在Ruby中统一数组?

我知道" .uniq"方法,但它在这里不起作用.我在一个数组中推送了Mechanize链接实例并应用了它,但它没有删除重复项.这是阵列..

#<Mechanize::Page::Link "2" "/inquiry/inquiry-results.jsp?d-16544-p=2&middleName=&firstName=&lastName=JOHN">,
#<Mechanize::Page::Link "3" "/inquiry/inquiry-results.jsp?d-16544-p=3&middleName=&firstName=&lastName=JOHN">,
#<Mechanize::Page::Link "4" "/inquiry/inquiry-results.jsp?d-16544-p=4&middleName=&firstName=&lastName=JOHN">,
......................................................................................
#<Mechanize::Page::Link "2" "/inquiry/inquiry-results.jsp?d-16544-p=2&middleName=&firstName=&lastName=JOHN">,
#<Mechanize::Page::Link "3" "/inquiry/inquiry-results.jsp?d-16544-p=3&middleName=&firstName=&lastName=JOHN">,
#<Mechanize::Page::Link "4" "/inquiry/inquiry-results.jsp?d-16544-p=4&middleName=&firstName=&lastName=JOHN">,
#<Mechanize::Page::Link "5" "/inquiry/inquiry-results.jsp?d-16544-p=5&middleName=&firstName=&lastName=JOHN">,
#<Mechanize::Page::Link "6" "/inquiry/inquiry-results.jsp?d-16544-p=6&middleName=&firstName=&lastName=JOHN">,
Run Code Online (Sandbox Code Playgroud)

但仍然在使用之后." .uniq"结果是一样的.这是我正在使用的ruby代码..

page.links.each {|link| 
    page_links.push link if link.href =~ /inquiry-results/i and link.text =~ /[0-9]+/
}
Run Code Online (Sandbox Code Playgroud)

ruby mechanize

2
推荐指数
1
解决办法
596
查看次数

散列数组中特定键的不同出现次数

我有一个这样的数组:

array = [{"id"=>"id1", "email"=>"name@organization.com", "sess"=>"sess1"},
{"id"=>"id2", "email"=>"name@organization.com", "sess"=>"sess2"},
{"id"=>"id3", "email"=>"name@organization.com", "sess"=>"sess2"},
{"id"=>"id4", "email"=>"name@organization.com", "sess"=>"sess3"},
{"id"=>"id5", "email"=>"name@organization.com", "sess"=>"sess2"},
{"id"=>"id6", "email"=>"name@organization.com", "sess"=>"sess3"},
{"id"=>"id7", "email"=>"name@organization.com", "sess"=>"sess2"},
{"id"=>"id8", "email"=>"name@organization.com", "sess"=>"sess5"},
{"id"=>"id9", "email"=>"name@organization.com", "sess"=>"sess2"},
{"id"=>"id10", "email"=>"name@organization.com", "sess"=>"sess2"},]
Run Code Online (Sandbox Code Playgroud)

我怎样才能以简洁的方式做出能够在不重复的情况下返回所有不同出现的"sess"的东西?:

["sess1", "sess2", "sess3", "sess5"]
Run Code Online (Sandbox Code Playgroud)

我已经开始编写一个遍历所有元素的循环,并且如果"sess"值已经存在,每次构建一个新的哈希检查,但我确信在Ruby中必须有更好的方法.

ruby algorithm collections data-structures

2
推荐指数
1
解决办法
134
查看次数