Arrays 数组的ruby数组获取重复的字符串数组
我有一个数组:Arrays 数组的ruby数组获取重复的字符串数组,arrays,ruby,duplicates,Arrays,Ruby,Duplicates,我有一个数组: arr =[["twitter.com", 9], ["twitter.com", 9], ["google.com", 11], ["paypal.me", 11], ["twitter.com", 11], ["yahoo.com", 12], ["google.com", 14], ["twitter.com", 17], ["twitter.com", 18], ["youtube.com", 31]] 如何提取具有重复字符串的数组并获取
arr =[["twitter.com", 9], ["twitter.com", 9], ["google.com", 11], ["paypal.me", 11],
["twitter.com", 11], ["yahoo.com", 12], ["google.com", 14], ["twitter.com", 17],
["twitter.com", 18], ["youtube.com", 31]]
如何提取具有重复字符串的数组并获取:
[["twitter.com", 9], ["twitter.com", 9], ["google.com", 11], ["twitter.com", 11],
["google.com", 12], ["twitter.com", 17], ["twitter.com", 18]]
然后添加重复字符串的值:
[["twitter.com", 64], ["google.com", 25]]
并最终得到一个新阵列:
[["twitter.com", 64], ["youtube.com", 31], ["google.com", 25],
["yahoo.com", 12],["paypal.me", 11]]
我试过:
array.select{|element| array.count(element) > 1 }
但是得到的是:
[[“twitter.com”,9],“twitter.com”,9]
只需计算所有带有的站点,每个站点都有一个对象
:
array.each_with_object(Hash.new(0)) {|(site, count), memo| memo[site] += count}
#=> {"twitter.com"=>64, "google.com"=>25,
# "paypal.me"=>11, "yahoo.com"=>12, "youtube.com"=>31}
您只需将
添加到\u a
即可将结果转换为数组,但IMO哈希就足以解决您的问题。只需计算所有站点的和每个\u对象的数量即可:
array.each_with_object(Hash.new(0)) {|(site, count), memo| memo[site] += count}
#=> {"twitter.com"=>64, "google.com"=>25,
# "paypal.me"=>11, "yahoo.com"=>12, "youtube.com"=>31}
您只需将添加到a
即可将结果转换为数组,但IMO哈希就足以解决您的问题。功能方法:
pairs.
group_by { |k, v| k }.
map { |k, ps| [k, ps.map { |k, v| v }.reduce(:+)] }.
sort_by { |k, v| -v }
#=> [["twitter.com", 64], ["youtube.com", 31], ["google.com", 25],
# ["yahoo.com", 12], ["paypal.me", 11]]
功能方法:
pairs.
group_by { |k, v| k }.
map { |k, ps| [k, ps.map { |k, v| v }.reduce(:+)] }.
sort_by { |k, v| -v }
#=> [["twitter.com", 64], ["youtube.com", 31], ["google.com", 25],
# ["yahoo.com", 12], ["paypal.me", 11]]
你将如何排列新的数组值递增?@mamesaye,.sort_by{124; uu,v |-v}
@mamesaye:这不是惯用法,只要你可以,就使用sort_by
而不是sort
。你将如何排列新的数组值递增?@mamesaye,.sort_by{124; uu,v |-v}
@mamesaye:这不是惯用语,只要你能,就用sort\u
而不是sort
。你自己尝试过这个问题吗?你尝试过什么?你自己尝试过这个问题吗?你尝试过什么?你说的函数式是什么意思?@Ilya:函数式编程,不可变数据。我知道社区这个词的意思:)依我看,这段代码只是关于不可变的数据。这都是非常主观的,ofc,但每当一段代码使用不可变的结构、模块化抽象、高阶函数……时,我认为它可能被称为“函数”。你将如何用Ruby以函数式风格编写它?你说的函数式是什么意思?@Ilya:函数式编程,不可变数据。我知道社区这个词的意思:)依我看,这段代码只是关于不可变数据的。这都是非常主观的,ofc,但每当一段代码使用不可变结构、模块化抽象、高阶函数。。。,我认为它可能符合“函数式”的要求。您如何用Ruby以函数式风格编写它?