Ruby combined the two JSON arrays a
, b
with the +
operator to create an array called c=a+b
.
After that, I want to sort c
by the key value "id", but it doesn't sort well
I will write down what I tried and the results below, so I would appreciate it if you could let me know if you know.
a=[{id:10000, name:"aaa"}, {id:15000, name:"zzz"}]
b=[{id:12000, name:"bbb"}, {id:20000, name:"yyy"}]
c=a+b
=>[{:id=>10000,:name=>"aaa"}, {:id=>15000,:name=>"zzz"}, {:id=>12000,:name=>"bbb"}, {:id=>20000,:name=>yyyyyyy} }]
c. sort_by {|a|a["id"]}.reverse
=>[{:id=>20000,:name=>"yyy"}, {:id=>12000,:name=>"bbb"}, {:id=>15000,:name=>"zzz"}, {:id=>10000,:name=>"aaa"}]
=======
↓ 本当I really want it sorted like this よう
[{:id=>20000,:name=>"yyy"}, {:id=>15000,:name=>"zzz"}, {:id=>12000,:name=>"bbb"}}{:id=>10000,:name=>"aaaaa"}]
Symbol looks like an array of Hash keys.Therefore, a["id"]
does not seem to be able to sort a[:id]
because it does not get the value of a[:id]
.
a={id:10000, name:"aaa"}
# =>{:id=>10000,:name=>"aaa"}
a ["id"]
# =>nil
a [:id]
# = > 10000
Why don't you change the block you pass to sort_by
like this?
c.sort_by {|a|a[:id]}.reverse
© 2024 OneMinuteCode. All rights reserved.