如何在JavaScript中按字母值排序带索引对象并保留原索引
按值排序对象并保留原有索引
要实现保留原有索引、按值排序对象的需求,可按以下步骤操作:
- 将目标对象转换为包含键值对的数组,同时保留索引(键)与对应的值
- 对数组按值的字母顺序进行排序
- 将排序后的数组重新转换为对象
方法一(ES6+ 环境)
使用Object.entries()和Object.fromEntries()简化操作:
var response = {3: 'Ab', 8: 'Fe', 10: 'Bc', 15: 'Eg'}; // 转换为键值对数组 const entries = Object.entries(response); // 按值的字母顺序排序 entries.sort((a, b) => a[1].localeCompare(b[1])); // 转回对象 var sorted = Object.fromEntries(entries); console.log(sorted); // 输出:{3: 'Ab', 10: 'Bc', 15: 'Eg', 8: 'Fe'}
方法二(兼容旧环境)
如果需要兼容不支持ES6新API的环境,可通过遍历键名实现:
var response = {3: 'Ab', 8: 'Fe', 10: 'Bc', 15: 'Eg'}; var sorted = {}; // 获取键名并按对应值排序,再逐个赋值到新对象 Object.keys(response) .sort((keyA, keyB) => response[keyA].localeCompare(response[keyB])) .forEach(key => { sorted[key] = response[key]; }); console.log(sorted); // 输出:{3: 'Ab', 10: 'Bc', 15: 'Eg', 8: 'Fe'}
注意:现代浏览器和Node.js环境中,对象会保留键值对的插入顺序,因此排序后的对象能按预期呈现顺序。
内容的提问来源于stack exchange,提问作者Shakil Ahmad
相关产品推荐
相关产品推荐

