使用键作为字符串,按哈希的第一个元素对哈希数组进行排序

埃里克瓦

我有以下数组/哈希:

[{"XYZ140717"=>
   {:unit=>10.25,
    :perc=>0.0,
    :exp=>2014-07-19 00:00:00 +1000}},
 {"ABC140719"=>
   {:unit=>8.71,
    :perc=>0.0,
    :exp=>2014-07-19 00:00:00 +1000}},
 {"MNO140718"=>
   {:unit=>8.55,
    :perc=>0.0,
    :exp=>2014-07-19 00:00:00 +1000}}]

我想对它进行排序,因此第一个是ABC140719,然后是MNO XYZ。我想不出办法。

安德鲁·马歇尔

困难的部分原因在于您的数据结构实际上没有任何意义。相反,让我们使“键”只是每个哈希的一个元素(更改:key为语义上有意义的任何内容):

items = [...] # your data from question
items = items.map do |hash|
  key, values = hash.first
  { key: key }.merge(values)
end
#=> [{:key=>"XYZ140717", :unit=>10.25, :perc=>0.0, :exp=>"2014-07-19 00:00:00 +1000"},
#    {:key=>"ABC140719", :unit=>8.71, :perc=>0.0, :exp=>"2014-07-19 00:00:00 +1000"},
#    {:key=>"MNO140718", :unit=>8.55, :perc=>0.0, :exp=>"2014-07-19 00:00:00 +1000"}]

现在使用起来变得相当简单sort_by

items.sort_by { |item| item[:key] }
#=> [{:key=>"ABC140719", :unit=>8.71, :perc=>0.0, :exp=>"2014-07-19 00:00:00 +1000"},
#    {:key=>"MNO140718", :unit=>8.55, :perc=>0.0, :exp=>"2014-07-19 00:00:00 +1000"},
#    {:key=>"XYZ140717", :unit=>10.25, :perc=>0.0, :exp=>"2014-07-19 00:00:00 +1000"}]

如果您坚持保留当前的数据结构,那么当然可以执行以下操作:

items.sort_by { |hash| hash.keys.first }

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将第一个数组的元素作为哈希键,将数组数组转换为哈希值

来自分类Dev

将第一个数组的元素作为哈希键,将数组数组转换为哈希值

来自分类Dev

按包含字符串格式的键对哈希进行排序

来自分类Dev

根据键在第一个数组元素内附加字符串

来自分类Dev

Ruby哈希表数组;仅保留包含特定键=>值对的第一个元素

来自分类Dev

红宝石哈希作为数组的第一个元素

来自分类Dev

使用java 8 Stream按第一个值对字符串数组进行分组

来自分类Dev

如何添加一个空字符串作为现有数组的第一个元素?

来自分类Dev

使用自定义排序对JavaScript字符串数组进行排序,以在第一个字符中使用标点符号

来自分类Dev

如何按字符串中的第一个字符对数组排序?

来自分类Dev

根据第一个字符对字符串进行排序

来自分类Dev

如何按部分字符串(或第一个单词)排序数据帧

来自分类Dev

C字符串-按第一个单词的长度排序

来自分类Dev

如何获取哈希图的第一个键?

来自分类Dev

使用 array_search() 返回与搜索字符串不匹配的第一个元素的键

来自分类Dev

Matlab,根据第一个对字符串单元格进行排序

来自分类Dev

按包含日期的字符串格式对键进行哈希排序

来自分类Dev

jQuery检查url字符串是否为第一个哈希,然后删除之前的所有内容

来自分类Dev

如何按字母顺序对目录列表进行排序,并获取在特定字符串之后排序的第一个值?

来自分类Dev

使用javascript获取数组中每个字符串的第一个元素

来自分类Dev

AngularJS:将字符串拆分为数组,获取第一个元素

来自分类Dev

从第一个元素中获取特定字符串-数组

来自分类Dev

哈希定义到导致空点异常的数组的第一个元素

来自分类Dev

为什么`TRegEx.split` 返回一个空字符串作为第一个元素?

来自分类Dev

根据第二个数组的子字符串,将一个键值对添加到第一个数组的哈希中

来自分类Dev

使用字符串或符号作为键创建哈希

来自分类Dev

Perl-使用RegExp字符串作为哈希键

来自分类Dev

在C#中按其第一个元素的升序对2D数组行进行排序

来自分类Dev

给定一个长数字字符串数组,按升序对其进行排序

Related 相关文章

  1. 1

    将第一个数组的元素作为哈希键,将数组数组转换为哈希值

  2. 2

    将第一个数组的元素作为哈希键,将数组数组转换为哈希值

  3. 3

    按包含字符串格式的键对哈希进行排序

  4. 4

    根据键在第一个数组元素内附加字符串

  5. 5

    Ruby哈希表数组;仅保留包含特定键=>值对的第一个元素

  6. 6

    红宝石哈希作为数组的第一个元素

  7. 7

    使用java 8 Stream按第一个值对字符串数组进行分组

  8. 8

    如何添加一个空字符串作为现有数组的第一个元素?

  9. 9

    使用自定义排序对JavaScript字符串数组进行排序,以在第一个字符中使用标点符号

  10. 10

    如何按字符串中的第一个字符对数组排序?

  11. 11

    根据第一个字符对字符串进行排序

  12. 12

    如何按部分字符串(或第一个单词)排序数据帧

  13. 13

    C字符串-按第一个单词的长度排序

  14. 14

    如何获取哈希图的第一个键?

  15. 15

    使用 array_search() 返回与搜索字符串不匹配的第一个元素的键

  16. 16

    Matlab,根据第一个对字符串单元格进行排序

  17. 17

    按包含日期的字符串格式对键进行哈希排序

  18. 18

    jQuery检查url字符串是否为第一个哈希,然后删除之前的所有内容

  19. 19

    如何按字母顺序对目录列表进行排序,并获取在特定字符串之后排序的第一个值?

  20. 20

    使用javascript获取数组中每个字符串的第一个元素

  21. 21

    AngularJS:将字符串拆分为数组,获取第一个元素

  22. 22

    从第一个元素中获取特定字符串-数组

  23. 23

    哈希定义到导致空点异常的数组的第一个元素

  24. 24

    为什么`TRegEx.split` 返回一个空字符串作为第一个元素?

  25. 25

    根据第二个数组的子字符串,将一个键值对添加到第一个数组的哈希中

  26. 26

    使用字符串或符号作为键创建哈希

  27. 27

    Perl-使用RegExp字符串作为哈希键

  28. 28

    在C#中按其第一个元素的升序对2D数组行进行排序

  29. 29

    给定一个长数字字符串数组,按升序对其进行排序

热门标签

归档