Rails - 查找多个数组之间的交集

发布于 2024-09-08 16:46:31 字数 242 浏览 4 评论 0原文

我正在尝试查找多个数组之间的交集值。

例如

code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]

所以结果是 2

我知道在 PHP 中你可以使用 array_intersect 来做到这一点

我希望能够轻松添加额外的数组,所以我真的不想使用多个循环

有什么想法吗?

谢谢,亚历克斯

I am trying to find the intersection values between multiple arrays.

for example

code1 = [1,2,3]
code2 = [2,3,4]
code3 = [0,2,6]

So the result would be 2

I know in PHP you can do this with array_intersect

I wanted to be able to easily add additional array so I don't really want to use multiple loops

Any ideas ?

Thanks, Alex

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

如何视而不见 2024-09-15 16:46:31

使用 & 方法="http://ruby-doc.org/core/classes/Array.html" rel="noreferrer">Array 用于设置交集。

例如:

> [1,2,3] & [2,3,4] & [0,2,6]
=> [2]

Use the & method of Array which is for set intersection.

For example:

> [1,2,3] & [2,3,4] & [0,2,6]
=> [2]
情痴 2024-09-15 16:46:31

如果您想要一种更简单的方法来处理未知长度的数组,可以使用注入。

> arrays = [code1,code2,code3]
> arrays.inject(:&)                   # Ruby 1.9 shorthand
=> [2]
> arrays.inject{|codes,x| codes & x } # Full syntax works with 1.8 and 1.9
=> [2]

If you want a simpler way to do this with an array of arrays of unknown length, you can use inject.

> arrays = [code1,code2,code3]
> arrays.inject(:&)                   # Ruby 1.9 shorthand
=> [2]
> arrays.inject{|codes,x| codes & x } # Full syntax works with 1.8 and 1.9
=> [2]
以歌曲疗慰 2024-09-15 16:46:31

Array#intersection (Ruby 2.7+)

Ruby 2.7 引入 Array# intersection 方法来匹配更简洁的 Array# &

所以,现在,[1, 2, 3] & [2,3,4] & [0, 2, 6] 可以用更详细的方式重写,例如

[1, 2, 3].intersection([2, 3, 4]).intersection([0, 2, 6])
# => [2]

[1, 2, 3].intersection([2, 3, 4], [0, 2, 6])
# => [2]

Array#intersection (Ruby 2.7+)

Ruby 2.7 introduced Array#intersection method to match the more succinct Array#&.

So, now, [1, 2, 3] & [2, 3, 4] & [0, 2, 6] can be rewritten in a more verbose way, e.g.

[1, 2, 3].intersection([2, 3, 4]).intersection([0, 2, 6])
# => [2]

[1, 2, 3].intersection([2, 3, 4], [0, 2, 6])
# => [2]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文