根据另一个数组中的顺序对数组数组进行排序

塞利姆·阿拉瓦

我有一个数组数组:

x = [
  ["ready", 5], ["shipped", 1], ["pending", 1], ["refunded", 1],
  ["delivered", 23], ["scheduled", 1], ["canceled", 51]
]

我的排序数组是

order_array = [
  "ready", "in_progress", "recieved", "shipped", "scheduled", "pick_up",
 "delivered", "canceled", "failed", "refunded", "refund_failed"
]

我需要x根据每个子数组中第一个元素的值进行排序所需的排序数组是:

[
  ["ready", 5], ["shipped", 1], ["scheduled", 1], ["delivered", 23],
  ["canceled", 51], ["refunded", 1]
]

使用sort_by不会导致所需的排序,它会导致相同的数组。

result = x.sort_by {|u| order_array.index(u)}
# => [
#      ["ready", 5], ["shipped", 1], ["pending", 1], ["refunded", 1],
#      ["delivered", 23], ["scheduled", 1], ["canceled", 51]
# ]
好的
h = x.to_h
# => {"ready"=>5,
# "shipped"=>1,
# "pending"=>1,
# "refunded"=>1,
# "delivered"=>23,
# "scheduled"=>1,
# "canceled"=>51}

order_array.map{|key| [key, h[key]] if h.key?(key)}.compact
# => [["ready", 5],
# ["shipped", 1],
# ["scheduled", 1],
# ["delivered", 23],
# ["canceled", 51],
# ["refunded", 1]]

或者

h = x.to_h{|k, v| [k, [k, v]]}
#=> {"ready"=>["ready", 5],
# "shipped"=>["shipped", 1],
# "pending"=>["pending", 1],
# "refunded"=>["refunded", 1],
# "delivered"=>["delivered", 23],
# "scheduled"=>["scheduled", 1],
# "canceled"=>["canceled", 51]}

order_array.map{|k| h[k]}.compact
#=> [["ready", 5],
# ["shipped", 1],
# ["scheduled", 1],
# ["delivered", 23],
# ["canceled", 51],
# ["refunded", 1]]

或者

h = x.to_h{|k, v| [k, [k, v]]}
#=> {"ready"=>["ready", 5],
# "shipped"=>["shipped", 1],
# "pending"=>["pending", 1],
# "refunded"=>["refunded", 1],
# "delivered"=>["delivered", 23],
# "scheduled"=>["scheduled", 1],
# "canceled"=>["canceled", 51]}

h.values_at(*order_array).compact
#=> [["ready", 5],
# ["shipped", 1],
# ["scheduled", 1],
# ["delivered", 23],
# ["canceled", 51],
# ["refunded", 1]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据另一个数组中定义的排序顺序对数组进行排序

来自分类Dev

根据另一个数组的顺序对数组数组进行排序(Ruby)

来自分类Dev

根据另一个数组的排序顺序对数组进行排序

来自分类Dev

根据另一个数组按顺序对数组进行排序

来自分类Dev

根据另一个数组的顺序对数组进行有效排序

来自分类Dev

根据javascript中的另一个数组对数组进行排序

来自分类Dev

Javascript使用下划线根据另一个数组顺序对数组顺序进行排序

来自分类Dev

根据另一个数组的顺序对一个数组进行排序

来自分类Dev

根据另一个数组的排序顺序对多个数组进行排序

来自分类Dev

根据另一个数组的排序顺序对多个数组进行排序

来自分类Dev

如何根据另一个数组的排序顺序对多个数组进行排序

来自分类Dev

CUDA:使用推力根据另一个数组定义的顺序对数组进行排序

来自分类Dev

根据具有重复项的另一个数组的顺序对数组进行排序

来自分类Dev

根据数组键顺序对另一个数组内的数组进行排序

来自分类Dev

以与另一个数组相同的顺序对数组进行排序

来自分类Dev

按另一个数组的顺序对数组进行排序

来自分类Dev

javascript-按另一个数组的顺序对数组进行排序

来自分类Dev

以与另一个数组相同的顺序对数组进行排序

来自分类Dev

PHP:根据另一个数组对数组进行排序

来自分类Dev

根据另一个数组对数组进行排序,迅速

来自分类Dev

根据PHP上的另一个数组对数组的元素进行排序

来自分类Dev

如何根据另一个数组的位置对数组进行排序?

来自分类Dev

在绘制之前根据另一个数组对数组进行排序

来自分类Dev

如何根据另一个数组的值对数组的值进行排序

来自分类Dev

根据另一个数组中的排序索引对数组重新排序

来自分类Dev

如何根据JavaScript中的另一个数组对数组排序?

来自分类Dev

与Swift中的另一个数组相比,对数组进行重新排序

来自分类Dev

用JavaScript中另一个数组的内容对数组进行排序

来自分类Dev

基于另一个数组索引在 PHP 中对数组进行排序

Related 相关文章

  1. 1

    根据另一个数组中定义的排序顺序对数组进行排序

  2. 2

    根据另一个数组的顺序对数组数组进行排序(Ruby)

  3. 3

    根据另一个数组的排序顺序对数组进行排序

  4. 4

    根据另一个数组按顺序对数组进行排序

  5. 5

    根据另一个数组的顺序对数组进行有效排序

  6. 6

    根据javascript中的另一个数组对数组进行排序

  7. 7

    Javascript使用下划线根据另一个数组顺序对数组顺序进行排序

  8. 8

    根据另一个数组的顺序对一个数组进行排序

  9. 9

    根据另一个数组的排序顺序对多个数组进行排序

  10. 10

    根据另一个数组的排序顺序对多个数组进行排序

  11. 11

    如何根据另一个数组的排序顺序对多个数组进行排序

  12. 12

    CUDA:使用推力根据另一个数组定义的顺序对数组进行排序

  13. 13

    根据具有重复项的另一个数组的顺序对数组进行排序

  14. 14

    根据数组键顺序对另一个数组内的数组进行排序

  15. 15

    以与另一个数组相同的顺序对数组进行排序

  16. 16

    按另一个数组的顺序对数组进行排序

  17. 17

    javascript-按另一个数组的顺序对数组进行排序

  18. 18

    以与另一个数组相同的顺序对数组进行排序

  19. 19

    PHP:根据另一个数组对数组进行排序

  20. 20

    根据另一个数组对数组进行排序,迅速

  21. 21

    根据PHP上的另一个数组对数组的元素进行排序

  22. 22

    如何根据另一个数组的位置对数组进行排序?

  23. 23

    在绘制之前根据另一个数组对数组进行排序

  24. 24

    如何根据另一个数组的值对数组的值进行排序

  25. 25

    根据另一个数组中的排序索引对数组重新排序

  26. 26

    如何根据JavaScript中的另一个数组对数组排序?

  27. 27

    与Swift中的另一个数组相比,对数组进行重新排序

  28. 28

    用JavaScript中另一个数组的内容对数组进行排序

  29. 29

    基于另一个数组索引在 PHP 中对数组进行排序

热门标签

归档