arrays - 基于键值数组重新排序 ruby 中的哈希数组
问题描述
我有一个哈希数组。例如,
arr =[[{:id=>61,:price=>20}, {:id=>61, :price=>23}, {:id=>61, :price=>60}],
[{:id=>65, :price=>20}, {:id=>65, :price=>23}, {:id=>65, :price=>60}],
[{:id=>69, :price=>20}, {:id=>69, :price=>33}, {:id=>69, :price=>80}]]
order_arr = [65,69,61]
如何以键的给定顺序(基于'order_arr')重新排序上述数组:id。
所以,结果应该如下:
[[{:id=> 65, :price=>20}, {:id=>65, :price=>23}, {:id=>65, :price=>60}],
[{:id=>69, :price=>20}, {:id=>69, :price=>33}, {:id=>69, :price=>80}],
[{:id=>61,:price=>20}, {:id=>61, :price=>23}, {:id=>61, :price=>60}]]
请帮忙
解决方案
我使用您的索引对order_arr
数组数组进行排序sort_by
arr =[[{:id=>61,:price=>20}, {:id=>61, :price=>23}, {:id=>61, :price=>60}],
[{:id=>65, :price=>20}, {:id=>65, :price=>23}, {:id=>65, :price=>60}],
[{:id=>69, :price=>20}, {:id=>69, :price=>33}, {:id=>69, :price=>80}]]
order_arr = [65,69,61]
sorted_arr = arr.sort_by { |ary| order_arr.index(ary.first[:id]) }
pp sorted_arr
推荐阅读
- java - 用于在不同国家注册的电话号码的 Spring Formatter
- java - 连接到 MySQL 成功,但在查询时出现 Communications link failure 错误
- reactjs - 无法清除material-ui Aucocomplete中的输入文本
- javascript - 如何同时增加值而不是按顺序映射它们?
- javascript - 未捕获的类型错误:Inventory.updateInventory 不是函数
- ios - 每天在 Firebase 上检索不同的字符串 - swift
- android - 如何将 ID 的数组列表更改为其他列值 SQLite 的数组列表?
- html - 在网页中从右到左显示内容(html 和 css)
- java - 使用 badass-runtime 插件中的图像运行 gradle 测试
- angular - gojs-angular 无法重现最小示例