gpt4 book ai didi

arrays - 使用 "sort"对 ruby​​ 中的对象数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:52 25 4
gpt4 key购买 nike

我怎样才能对这个数组进行排序,使所有带有 optional = true 的哈希都排在最后?

my_array = [
{ name: "foo", optional: true },
{ name: "pop" },
{ name: "boop", optional: true },
{ name: "pop", optional: false }
]

我试过这个:

my_array.sort { |a,b| a['optional'] <=> b['optional'] }

但是我得到这个错误:

comparison of Hash with Hash failed

错误令人惊讶,因为执行 ['optional'] 会返回值 truefalsenil

注意:
我知道这个解决方案 .sort_by { |a| (a['optional'] ? 1 : 0) }。我想特别了解 sort 方法。

最佳答案

bool 值不是序数数据类型 - true不大于或小于 false , 它只是不相等,所以你不能使用 <=>运营商要么。如果您想根据可选属性对数组进行排序,您需要一些简单的自定义逻辑。例如:

my_array.sort { |a,b| a['optional'] == b['optional'] ? 0 : a['optional'] ? 1 : -1}

关于arrays - 使用 "sort"对 ruby​​ 中的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32778005/

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