首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在具有重复ruby的数组中查找公共元素

如何在具有重复ruby的数组中查找公共元素
EN

Stack Overflow用户
提问于 2015-03-03 00:47:14
回答 3查看 640关注 0票数 0

假设数组如下所示

代码语言:javascript
复制
city = ['london', 'new york', 'london', 'london', 'washington']

desired_location = ['london']

city & desired_location给了['london']

但我想要['london', 'london', 'london']

EN

回答 3

Stack Overflow用户

发布于 2015-03-03 00:51:11

您可以使用Enumerable#select

代码语言:javascript
复制
city.select {|c| desired_location.include?(c)}
# => ["london", "london", "london"]
票数 2
EN

Stack Overflow用户

发布于 2015-03-03 02:34:49

代码语言:javascript
复制
cities = ['london', 'new york', 'london', 'london', 'washington']

如果desired_location包含单个元素:

代码语言:javascript
复制
desired_location = ['london']

我推荐@santosh的解决方案,但这也是可行的:

代码语言:javascript
复制
desired_location.flat_map { |c| [c]*cities.count(c) }
  #=> ["london", "london", "london"]

假设desired_location包含多个元素(我假设这是一种可能性,否则就不需要它是一个数组):

代码语言:javascript
复制
desired_location = ['london', 'new york']

@Santosh‘方法返回:

代码语言:javascript
复制
["london", "new York", "london", "london"]

这很可能就是你想要的。如果您希望将它们组合在一起:

代码语言:javascript
复制
desired_location.flat_map { |c| [c]*cities.count(c) }
  #=> ["london", "london", "london", "new york"]

或者:

代码语言:javascript
复制
desired_location.map { |c| [c]*cities.count(c) }
  #=> [["london", "london", "london"], ["new york"]]

根据您的需求,您可能会发现生成散列更有用:

代码语言:javascript
复制
Hash[desired_location.map { |c| [c, cities.count(c)] }]
  #=> {"london"=>3, "new york"=>1} 
票数 1
EN

Stack Overflow用户

发布于 2015-03-03 01:05:49

另一种方式:

代码语言:javascript
复制
cities = ['london', 'new york', 'london', 'london', 'washington']
puts cities.select{|city| cities.count(city) > 1}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28815103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档