Lodash - 在对象中排序对象(desc和asc)
答
广场内部对象sortBy()
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 34 }
];
_.sortBy(users, function(o) { return o.user; });
// → objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
console.log(users.reverse()); // desc order
答
纯JS也很简单,你可以做这样的事情;
var obj = {a:16, b:2, c:8, d:4, e:1},
okeys = Object.keys(obj),
sorted = {};
okeys.sort((p,c) => obj[p] <= obj[c]).forEach((p,i) => sorted[okeys[i]] = obj[p]);
document.write('<pre> ' + JSON.stringify(sorted, 0, 2) + '</pre>');
我根据它们的数值排序对象属性。它们的值可以是对象,也可以根据这些对象的属性值进行排序。但是我不能评论什么是做这一切的明智原因。
你的意思是按照排序的顺序将对象放置在不同的键上?如果是这样,你可以简单地通过纯JS来完成。一种方法是将它们移动到一个数组并在那里排序,然后以排序的顺序将其复制回obj ..或者另一种方法是使用对象元素总数的值向主对象添加length属性,然后执行Array。 prototype.sort.call(obj,callback) – Redu
根据JavaScript规范,对象的属性没有顺序。没有“第一”或“最后”属性;他们不能被排序。无论您为它们分配的顺序(或它们在控制台中显示的顺序),在枚举它们时都不保证以任何特定顺序返回它们。如果您需要有序数据结构,请使用数组。 –