【发布时间】:2022-01-21 16:39:00
【问题描述】:
我想根据某些内容条件过滤 Ruby 中的 params[] 哈希数组。 我看过其他一些讨论,但需求不同。
我的数组示例:
{"id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "optimized_nickname"=>"Grand Vin", "optimized_country_id"=>"1", "season_id"=>"a9840059-cc91-47aa-9098-4bf8a45655e7", "verified_status"=>"1"}
{"id"=>"8ee93dc5-abd3-4cdd-ad20-29fcf1168a66", "optimized_nickname"=>"Grand Vin 2", "optimized_country_id"=>"1", "season_id"=>"8ee93dc5-abd3-4cdd-ad20-29fcf1168a66", "verified_status"=>"1"}
{"id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "optimized_nickname"=>"Grand Vin 3", "optimized_country_id"=>"1", "season_id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "verified_status"=>"1"}
{"id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "optimized_nickname"=>"Grand Vin", "optimized_country_id"=>"1", "season_id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "verified_status"=>"1"}
过滤条件:
-
当 id 字段与另一个哈希相同时
-
optimized_nickname 和 optimized_country_id 字段的值不同
-
不要触摸响应这两个条件的第一个哈希
-
根据这两个条件修改所有其他哈希值:将它们的 verified_status 字段设置为 0,除非之前的哈希值已经有
verified_status=0
我想为这个用例获得什么:
{"id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "optimized_nickname"=>"Grand Vin", "optimized_country_id"=>"1", "season_id"=>"a9840059-cc91-47aa-9098-4bf8a45655e7", "verified_status"=>"1"}
{"id"=>"8ee93dc5-abd3-4cdd-ad20-29fcf1168a66", "optimized_nickname"=>"Grand Vin 2", "optimized_country_id"=>"1", "season_id"=>"8ee93dc5-abd3-4cdd-ad20-29fcf1168a66", "verified_status"=>"1"}
{"id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "optimized_nickname"=>"Grand Vin 3", "optimized_country_id"=>"1", "season_id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "verified_status"=>"0"}
{"id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "optimized_nickname"=>"Grand Vin", "optimized_country_id"=>"1", "season_id"=>"f00b5b20-0250-4e0d-8a05-c70905030a32", "verified_status"=>"1"}
在第三个散列中,verified_status 字段已设置为 0,因为它的值与第一个散列不同(因为它们具有相同的 id)。
我想我需要使用 .map 或 .select,但不知道如何检查值。 谢谢。
【问题讨论】:
-
您是否将第一条记录与第二条进行比较,然后将第二条与第三条等进行比较?或者您有来自
params之外的一条记录,并将其与来自params的所有记录进行比较? -
我想一对一比较uniq params数组上的记录。
-
"...并且字段 optimize_nickname 和 optimize_country_id 具有不同的值"。您的意思是“optimized_nickname 还是 optimize_country_id”?
-
是的,迈克尔。如果这 2 个中至少有 1 个与其他具有相同 id 的哈希不同。
-
您至少需要使用一些示例代码来分解您的问题,这些示例代码显示了您尝试表示的逻辑。即使它不是整个哈希,您也确实需要展示您尝试过的内容以及任何错误或不正确的输出,以说明为什么这对您不起作用。 idownvotedbecau.se/nocode