这里是新手 Javascript 问题:我有一个包含像这样的数组的对象
const obj = {
'red': [ 'a', 'b', 'c'],
'blue': [ 'a' ],
'green': [ 'a', 'b', 'c', 'd', 'e' ]
}
我想对我的对象进行排序,以便具有最大数组的属性排在前面
obj = {
'green': [ 'a', 'b', 'c', 'd', 'e' ],
'red': [ 'a', 'b', 'c'],
'blue': [ 'a' ]
}
有没有一种简单的单行或 lodash 方法可以实现这一目标?
最佳答案
将对象转换为数组。根据您的需要对数组进行排序,然后从该数组重新构建一个对象,如下所示:
const obj = {
'red': ['a', 'b', 'c'],
'blue': ['a'],
'green': ['a', 'b', 'c', 'd', 'e']
};
const ordered = {};
const asArray = Object.keys(obj).map(key => ({
key,
arr: obj[key]
})); // create an array from the object
asArray.sort((a, b) => b.arr.length - a.arr.length); // sor the array so the array has bigger length should come first
asArray.forEach(r => {
ordered[r.key] = r.arr
}); // re construct as new object
console.log(ordered);
关于javascript - 对对象进行排序,使最大的嵌套数组排在前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61222361/