如何按键对JavaScript对象排序?附示例代码与预期结果
按键名中的数字排序ADF_前缀的JavaScript对象
要将键名格式为ADF_+数字的无序JavaScript对象,按照键中数字从小到大排序,可通过提取键值数字、数值排序、重构对象三步实现:
原始数据
const data = {"ADF_3":"","ADF_2":"","ADF_1":"","ADF_7":"","ADF_17":"","ADF_6":"","ADF_18":"","ADF_5":"","ADF_15":"","ADF_4":"","ADF_16":"","ADF_9":"","ADF_19":"","ADF_8":"","ADF_20":"","ADF_10":"","ADF_13":"","ADF_14":"","ADF_11":"","ADF_12":""};
排序实现代码
// 提取所有键并按数字排序 const sortedKeys = Object.keys(data).sort((keyA, keyB) => { // 拆分键名获取数字部分,转为整数 const numA = parseInt(keyA.split('_')[1], 10); const numB = parseInt(keyB.split('_')[1], 10); // 数值排序(避免字符串排序导致10排在2前的问题) return numA - numB; }); // 基于排序后的键重构有序对象 const sortedData = {}; sortedKeys.forEach(key => { sortedData[key] = data[key]; });
最终输出结果
{"ADF_1":"","ADF_2":"","ADF_3":"","ADF_4":"","ADF_5":"","ADF_6":"","ADF_7":"","ADF_8":"","ADF_9":"","ADF_10":"","ADF_11":"","ADF_12":"","ADF_13":"","ADF_14":"","ADF_15":"","ADF_16":"","ADF_17":"","ADF_18":"","ADF_19":"","ADF_20":""};
代码说明
Object.keys(data):获取对象所有键的数组sort方法:通过split('_')[1]提取键中的数字片段,转为整数后做差值排序,确保是数值排序而非字符串排序- 遍历排序后的键数组,将原对象的键值对依次存入新对象,得到有序结构
内容的提问来源于stack exchange,提问作者RaJ SoNi
相关产品推荐
相关产品推荐

