3 回答
TA贡献1880条经验 获得超4个赞
您正在寻找的很可能是:
Object.entries(obj).sort(([, a], [, b]) => b.length - a.length);
但是,上面代码的输出是一个由对象的可枚举属性 [key, value] 对组成的数组。无法实现在对象本身内部对对象的键进行排序。
TA贡献1789条经验 获得超8个赞
假设所有键都是整数
Object.keys(obj).sort((a,b)=>a-b).reduce((acc, key)=>((acc[key]=obj[key]), acc),{});
返回具有排序键的新对象
编辑: 根据值长度(数组长度)排序;
Object.keys(obj).sort((a,b)=>obj[b].length - obj[a].length)
.reduce((acc, key)=>((acc[key]=obj[key]), acc),{});
const obj = {
'1.2.3': [1,2,3,4],
'ABC12': [],
'CAA11': [3,5],
'4.4.1': [1,2,3],
}
const res = Object.keys(obj)
.sort((a,b)=>obj[b].length - obj[a].length)
.reduce((acc, key)=>((acc[key]=obj[key]), acc),{});
console.log(res);
TA贡献2051条经验 获得超10个赞
let obj = {
'1.2.3': [1,2,3,4],
'ABC12': [],
'CAA11': [3,5],
'4.4.1': [1,2,3],
}
console.log(obj);
let entries = Object.entries(obj).sort((a,b) => { return b[1].length - a[1].length;});
let tempObj = {};
for(let i = 0; i < entries.length; i++){
tempObj[entries[i][0]] = entries[i][1];
}
obj = tempObj;
console.log(obj);
添加回答
举报