Lodash 根据键对对象列表进行排序

问题描述 投票:0回答:3

我正在寻找基于键对对象列表进行排序

这是我的对象

var Categories =    {

      "social": [
        {
          "id": "social_001",
          "lastModified": "2 Day ago"
        }
      ],
"communication": [
        {
          "id": "communication_001",
          "lastModified": "4 Day ago"
        },
        {
          "id": "communication_002",
          "lastModified": "1 Day ago"
        }
      ],
      "storage": [
        {
          "id": "storage_001",
          "lastModified": "3 Day ago"
        }
      ]
    }

因此在输出排序对象中将以communication开始排序, 社交存储 建议我一些帮助。

javascript node.js lodash
3个回答
14
投票

这是使用 lodash 的解决方案:

var Categories = {
  "social": [
    {
      "id": "social_001",
      "lastModified": "2 Day ago"
    }
  ],
  "communication": [
    {
      "id": "communication_001",
      "lastModified": "4 Day ago"
    },
    {
      "id": "communication_002",
      "lastModified": "1 Day ago"
    }
  ],
  "storage": [
    {
      "id": "storage_001",
      "lastModified": "3 Day ago"
    }
  ]
}

var ordered = {};   
_(Categories).keys().sort().each(function (key) {
  ordered[key] = Categories[key];
});

Categories = ordered;

3
投票

使用 lodash

_.keys
Object.keys
从对象中获取键数组,并使用 JavaScript 的
sort()
sort().reverse()
对该数组进行升序或降序排序。

然后使用这个数组来拾取每个对象

yourObject[array[0]]


0
投票

这是使用 lodash 的单行代码:

_.pick(obj, Object.keys(obj).sort());

pick
将返回一个新对象,其键按照第二个参数指定的顺序排列。

© www.soinside.com 2019 - 2024. All rights reserved.