如何实现Javascript对象按值排序,值相等时按键排序
JavaScript 对象按属性值、属性名排序实现方案
实现逻辑如下:
- 首先提取对象的所有属性键生成数组
- 自定义排序规则:优先按属性值降序排列,属性值相同时按键的字典序升序排列
- 按排序后的键顺序插入新对象,得到最终的有序对象
完整代码示例:
// 原始对象 const originalObj = { "g":-3, "e":2, "n":-3, "b": -3, "f": -5 }; // 对键进行自定义排序 const sortedKeys = Object.keys(originalObj).sort((keyA, keyB) => { const valA = originalObj[keyA]; const valB = originalObj[keyB]; // 属性值不同时按值降序排列 if (valA !== valB) { return valB - valA; } // 属性值相同时按键的字典序升序排列 return keyA.localeCompare(keyB); }); // 生成有序新对象 const sortedObj = {}; sortedKeys.forEach(key => { sortedObj[key] = originalObj[key]; }); console.log(sortedObj); // 输出结果:{ e: 2, b: -3, g: -3, n: -3, f: -5 }
注意:该实现依赖ES6+规范的对象属性顺序规则,所有现代浏览器、Node.js v6+版本都支持该特性,字符串类型的属性会按插入顺序保留排列顺序。
内容的提问来源于stack exchange,提问作者primelos
相关产品推荐
相关产品推荐

