Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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_Duplicates - Fatal编程技术网

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以函数式风格编写它?