如何在rails 3中从二维数组的数组中查找记录?

发布于 2024-11-29 18:49:52 字数 1017 浏览 0 评论 0 原文

我正在研究 Rails 3.0。我有一个二维数组。二维数组由用户数据和布尔值组成。

例如: [ [user1,true], [user2,true], [user3,false] ]

它看起来像这样:

[
    [#<User id: 1, email: "[email protected]", username: "abc">, true],
    [#<User id: 2, email: "[email protected]", username: "ijk">, true],
    [#<User id: 3, email: "[email protected]", username: "xyz">, false],
]

我想有条件地查找/提取记录;假设查找 User id=2 的整行,它应该只返回第二行,即 [#[电子邮件受保护]", username: "ijk">, true]

是否有办法循环访问这样的数组?如何才能实现呢?

I am working on Rails 3.0. I have a two dimensional array. The two dimensional array consists of user data and a boolean value.

For example: [ [user1,true], [user2,true], [user3,false] ]

It looks something like this:

[
    [#<User id: 1, email: "[email protected]", username: "abc">, true],
    [#<User id: 2, email: "[email protected]", username: "ijk">, true],
    [#<User id: 3, email: "[email protected]", username: "xyz">, false],
]

I want to find/extract records conditionally; say finding an entire row where User id=2, it should return only the second row i.e. [#<User id: 2, email: "[email protected]", username: "ijk">, true]

Is there anyway to loop through such arrays? How can it be achieved?

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

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

发布评论

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

评论(3

千柳 2024-12-06 18:49:52
my_array.select{ |user, flag| user.id == 2}

所有带有 true flag:

my_array.select{ |user, flag| flag }

或 false: 的用户

my_array.select{ |user, flag| !flag }
my_array.select{ |user, flag| user.id == 2}

all users with true flag:

my_array.select{ |user, flag| flag }

or false:

my_array.select{ |user, flag| !flag }
掐死时间 2024-12-06 18:49:52

您可以执行类似的操作

[ [user1,true], [user2,true], [user3,false] ].select { |u| u.first.id == 2}

,这将仅返回用户 id 等于 2 的记录。

You can do something like

[ [user1,true], [user2,true], [user3,false] ].select { |u| u.first.id == 2}

This will return only the records that have the user id equal to 2.

月寒剑心 2024-12-06 18:49:52

与@eugen相同的答案,仅语法差异(并使用检测返回单维数组而不是二维数组):

[ [user1,true], [user2,true], [user3,false] ].detect { |user, boolean| user.id == 2 }
=> [user2, true]

Same answer as @eugen, only syntax difference(and using detect to return single dimensional array instead of 2 dimensional array):

[ [user1,true], [user2,true], [user3,false] ].detect { |user, boolean| user.id == 2 }
=> [user2, true]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文