`

可对元素为Hash型的数组排序的Ruby Gem: sort_collections

阅读更多

sort_collections:https://github.com/lanrion/sort_collections

 

这个gem的目的是,当我们通过API接收数据的时候(没有使用ActiveRecord),会出现需要对当前数组进行排序,Ruby中已经提供了sort方法,但是该方法,只是对简单的String、Integer等类型排序,如果是Hash呢?我需要针对Hash里的某个key进行排序呢? 这个 sort_collections:https://github.com/lanrion/sort_collections 就是解决这个问题的。

 

安装

gem 'sort_collections'

 

使用举例

 

# init sort data
hash_array = [{"created_at"=>"Fri, 31 May 2013 00:26:53 HKT +08:00",
              "email"=>"peop@example.edu",
              "updated_at"=>"Fri, 31 May 2013 00:27:21 HKT +08:00"},
             {"created_at"=>"Thu, 30 May 2013 18:53:12 HKT +08:00",
              "email"=>"coco@example.com",
              "updated_at"=>"Sat, 06 Jul 2013 17:25:13 HKT +08:00"},
             {"created_at"=>"Sun, 16 Jun 2013 11:23:42 HKT +08:00",
              "email"=>"lele@example.com",
              "updated_at"=>"Tue, 23 Jul 2013 15:44:46 HKT +08:00"},
             {"created_at"=>"Fri, 31 May 2013 11:05:24 HKT +08:00",
              "email"=>"bebe@example.com",
              "updated_at"=>"Tue, 06 Aug 2013 13:19:09 HKT +08:00"},
              {"created_at"=>"Fri, 31 May 2013 11:05:24 HKT +08:00",
              "email"=>"bebe@example.com",
              "updated_at"=>"Tue, 06 Aug 2013 13:19:09 HKT +08:00"},
             {"created_at"=>"Thu, 30 May 2013 11:19:11 HKT +08:00",
              "email"=>"admin@example.com",
              "updated_at"=>"Wed, 11 Sep 2013 15:13:25 HKT +08:00"}]

# default: order_type: "asc", order_with: "id"
hash_array.order_collection

# assign order_with, e.g.: "email"
hash_array.order_collection(order_with: "email")

# ==> Result:

[{"created_at"=>"Thu, 30 May 2013 11:19:11 HKT +08:00",
  "email"=>"admin@example.com",
  "updated_at"=>"Wed, 11 Sep 2013 15:13:25 HKT +08:00"},
 {"created_at"=>"Fri, 31 May 2013 11:05:24 HKT +08:00",
  "email"=>"bebe@example.com",
  "updated_at"=>"Tue, 06 Aug 2013 13:19:09 HKT +08:00"},
 {"created_at"=>"Fri, 31 May 2013 11:05:24 HKT +08:00",
  "email"=>"bebe@example.com",
  "updated_at"=>"Tue, 06 Aug 2013 13:19:09 HKT +08:00"},
 {"created_at"=>"Thu, 30 May 2013 18:53:12 HKT +08:00",
  "email"=>"coco@example.com",
  "updated_at"=>"Sat, 06 Jul 2013 17:25:13 HKT +08:00"},
 {"created_at"=>"Sun, 16 Jun 2013 11:23:42 HKT +08:00",
  "email"=>"lele@example.com",
  "updated_at"=>"Tue, 23 Jul 2013 15:44:46 HKT +08:00"},
 {"created_at"=>"Fri, 31 May 2013 00:26:53 HKT +08:00",
  "email"=>"peop@example.edu",
  "updated_at"=>"Fri, 31 May 2013 00:27:21 HKT +08:00"}]

 

这样子就非常方便。

分享到:
评论

相关推荐

    c++中hash_table以及std::map应用案例

    代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...

    TBB并发容器 学习笔记

    TBB(Thread Building Blocks)是Intel开发的一个开源C++模板库,专为并行编程设计,旨在帮助开发者充分利用多核处理器的性能。TBB的主要目标是简化并行编程,提供高效、灵活的工具,使程序员可以更容易地创建可扩展...

    oc中数组排序

    在Objective-C(简称OC)中,数组是一种常用的数据结构,用于存储多个同类型的元素。数组排序是编程中常见的操作,特别是在处理数据时。本篇将深入探讨OC中数组的排序方法,以及如何通过实践来复习这个重要概念。 ...

    10Ruby 数组.docx

    这些对象可以是任何类型的 Ruby 对象,包括但不限于字符串(String)、整数(Integer)、哈希(Hash)甚至是其他数组(Array)等。数组中的每个元素都有一个与之关联的索引,索引从 0 开始。此外,Ruby 支持负数索引,即索引...

    cpp-sparsemap一个高效hashmap和hashset的C实现

    3. 遍历与迭代器:cpp-sparsemap支持迭代器,允许用户按照顺序或随机访问元素,方便进行各种遍历操作。 四、cpp-sparsemap的应用场景 cpp-sparsemap特别适合用于内存受限的环境,如嵌入式系统、游戏开发或者大规模...

    leetcode耗时-hash-tables-interview-questions::purple_circle:哈希表面试问题已回答,以帮助您为下一次数据结构面试做好

    leetcode 耗时 2021 年排名前 31 的哈希表面试问题和答案。 您可以在此处查看所有 31 个哈希表面试问题 :backhand_index_pointing_right: :small_blue_diamond: ...哈希表(hash ...散列函数是可用于将任意大小

    Java 实例 - 数组排序及元素查找源代码-详细教程.zip

    4. **快速排序(Quick Sort)**:由Pancake发明,采用分治策略,选择一个基准值,将数组分为两部分,小于基准的放在左边,大于的放在右边,然后对两边递归进行排序。 5. **归并排序(Merge Sort)**:也是分治策略...

    ruby-changelog:RubyCHANGELOG

    Ruby版本changelog 介绍 在上查看此项目的完整版本 本页面最后更新于2021-04-09通过rake md task Ruby更新日志 Ruby 3.0 实施: :gear: MJIT改进 :NEW_button: Ractor-像并发抽象的Actor模型 :test_tube: :NEW_...

    哈希表应用C++_STL_hash

    哈希表,也被称为散列表,是数据结构中一种高效的数据存储方式,它通过特定的哈希函数将关键字映射到数组的索引位置,从而实现快速查找、插入和删除操作。在C++中,标准模板库(STL)提供了一个名为`std::unordered_...

    leetcode2-leetcode-go::pencil:leetcode算法问题的Golang解决方案:books:(持续更新:flexed_biceps::grinning_face_with_big_eyes:)

    hash table binary search; divide and conquer double index; array double index; array double index; array double index; array dynamic programming sort; array double index; array sort; array dynamic ...

    mini_i18n::globe_with_meridians:Ruby的简约I18n库

    翻译应存储在YAML或JSON文件中,并将它们加载到内存中的Hash 。 en : hello : ' Hello ' >> MiniI18n . t ( :hello ) => "Hello" 安装 将此行添加到您的应用程序的Gemfile中: gem 'mini_i18n' 然后执行: > ...

    Ruby2.7.1_1_x64,

    - `Hash#transform_values`方法:这个新方法允许对哈希的所有值进行转换,而不仅仅是键值对。 - 性能改进:Ruby2.7引入了一些优化,如垃圾回收的改进,提升了整体运行效率。 此外,Ruby社区拥有丰富的Gem库,如...

    git-revision:Ruby gem获取有关git源代码的信息

    Git Revision是一个简单的(45 SLoC)Ruby gem,提供有关git源代码的基本信息。 您可以在应用程序中使用它,显示已部署的版本。 安装 添加到Gemfile: gem 'git-revision' 并运行: bundle install 用法 Git::...

    c++用vector实现HashSet

    为了用`std::vector`实现HashSet,我们需要关注几个关键点:插入元素、删除元素、检查元素是否存在以及保持元素唯一性。 1. **插入元素**: - 由于`std::vector`不是哈希表,直接插入元素不会保证O(1)的时间复杂度...

    linux hash_map

    Linux下的`hash_map`是一种基于哈希表的数据结构,它提供了高效的键值对存储功能。与`map`不同,`hash_map`不使用二叉查找树(如红黑树),而是利用哈希函数来实现快速查找。哈希表通常由数组和散列函数组成,数组的...

    STL.rar_hash stl_stl 封装_搜索树

    STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了大量的高效、可重用的容器、迭代器、算法和函数对象。在这个名为"STL.rar_hash stl_stl 封装_搜索树"的...

    哈希代码C++

    哈希代码在计算机科学中是一种数据结构技术,用于存储和检索数据,它的核心特性是能够以极快的速度查找、插入和删除元素。在C++编程中,哈希表(Hash Table)是通过哈希函数将键(Key)映射到一个桶(Bucket)中的...

    ds_hash:Ruby 哈希类扩展

    Ruby Hash类扩展。 安装 gem install ds_hash 通过实例学习 哈希。 deep_key? hash = { :a => { :b => 'b' } } hash . deep_key? :a , :b # return true hash . deep_key? :a , :x # return false 哈希。 deep_...

    leetcode答案-ruby_leetcode:ruby_leetcode

    Ruby LeetCode 做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。所以只要会 if, else, for, break, next, while, until, array, hash 就可以刷了。其它的边刷边学就行。 前言 ...

    Hash-table-CPP.zip_Table_hash

    每个数组元素称为一个桶(Bucket),每个桶可以存储一组具有相同哈希值的键值对。 3. **解决冲突**:由于哈希函数不可能完全避免冲突,因此需要有策略来处理这种情况。常见的解决冲突方法有开放寻址法(Open ...

Global site tag (gtag.js) - Google Analytics