我正在寻找基于键对对象列表进行排序
这是我的对象
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开始排序, 社交, 存储 建议我一些帮助。
这是使用 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;
使用 lodash
_.keys
或 Object.keys
从对象中获取键数组,并使用 JavaScript 的 sort()
或 sort().reverse()
对该数组进行升序或降序排序。
然后使用这个数组来拾取每个对象
yourObject[array[0]]
。
这是使用 lodash 的单行代码:
_.pick(obj, Object.keys(obj).sort());
pick
将返回一个新对象,其键按照第二个参数指定的顺序排列。