false, "id"=>"5f898f7784743992f24fcb51", "field_int"=-6ren">
gpt4 book ai didi

ruby-on-rails - Ruby sort_by 哈希数组

转载 作者:行者123 更新时间:2023-12-04 08:13:30 26 4
gpt4 key购买 nike

我有一个哈希数组,我希望能够对其中一个值按字母顺序排序。
哈希数组:

[{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>22, "field_string"=>"c next"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>33, "field_string"=>"d next"}]
运行 sort_by 后:
records.sort_by { |rec| rec[:field_string]}
=> [{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>22, "field_string"=>"c next"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>33, "field_string"=>"d next"}]
它为 field_int 列正确排序,但我不明白为什么它不能与 field_string 一起正常工作。
如果有人有任何想法,我真的很感激听到他们。
谢谢!

最佳答案

散列中的键是字符串而不是符号。records[0][:field_string]nilrecords[0]["field_string"]"test"所以你的排序是将 nils 与 nils 进行比较,并保持原始顺序。
你需要:

records.sort_by { |rec| rec["field_string"]}
它输出:
=> [{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"batch update testing"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>22, "field_string"=>"c next"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>33, "field_string"=>"d next"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"},
{"hidden"=>false, "id"=>"5f898f7784743992f24fcb51", "field_int"=>11, "field_string"=>"test"}]
这可能会令人困惑,因为 HashWithIndifferentAccess 也存在。

关于ruby-on-rails - Ruby sort_by 哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65829412/

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