gpt4 book ai didi

arrays - ruby keep_if 数组与字符串的比较

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:33 25 4
gpt4 key购买 nike

我正在尝试将字符串与对象数组进行比较。因此,当字符串值与数组中的该对象匹配时,它将保留它。

例子如下:

sample = [#<Model::ID:0x007fcb83ace8a0
type_id: 6,
parent_name: "Old Man",
child_name: "Junior">,
#<Model::ID:0x007fcb83abd0a0
type_id: 6,
parent_name: "Mary",
child_name: "Michelle">,
#<Model::ID:0x007fcb83abce70
type_id: 6,
parent_name: "Ole Bob",
child_name: "Bobby">]

name = "Michelle"

所以我尝试了以下方法:

sample.keep_if { |keep_ele| [keep_ele]["child_name"] == name }

这会返回以下错误:类型错误:没有将字符串隐式转换为整数

但是当我在 IRB 中并且我输出 sample[1]["child_name"] 它等于 "Michelle"

然后我尝试了:

sample.keep_if { |keep_ele| keep_ele["child_name"] == name }

它只是返回一个空数组:[]

知道如何运行 keep_if 吗?

最佳答案

keep_if block 内的

keep_ele 已经是数组中的模型对象(项目)。您应该改用以下比较:

sample.keep_if { |keep_ele| keep_ele["child_name"] == name }

查看 Array#keep_if 的文档页面.这是类似的例子:

sample = [
{
"child_name" => "Mike"
}, {
"child_name" => "Michelle"
}, {
"child_name" => "Joe"
}
]

name = "Michelle"
puts sample.keep_if { |keep_ele| keep_ele["child_name"] == name }
# => {"child_name"=>"Michelle"}

关于arrays - ruby keep_if 数组与字符串的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com