// 无序且不连续的对象属性;
let randomObj = {
'gsmc': 'xxxx人民政府',
'e29': '0',
'f29': '0',
'e28': '0',
'f28': '0',
'b30': '0',
'c29': '0',
'b31': '0',
'c40': '0',
'c38': '0',
'b44': '0',
'c44': '0',
'e11': '0',
'f11': '0',
'f14': '0',
'c30': '0',
'c35': '0',
'c31': '0',
'c36': '0',
'c37': '0',
'b41': '0',
'f6': '0',
'f10': '0',
'c43': '2341885212.63',
'e12': '0',
'f15': '101449455.26',
'e8': '7354238.36',
'c45': '2452856077.51',
'b45': '2548113060.94',
'c41': '0',
'b40': '0',
'f9': '0',
'f12': '0',
'e14': '0',
'e16': '0',
'f16': '0',
'b39': '0',
'e22': '69849325.41',
'f22': '110630687.88',
'e24': '0',
'e7': '65052.48',
'e9': '0',
'e15': '62430034.57',
'f5': '0',
'b29': '0',
'e6': '0',
'b35': '0',
'b43': '2477923558.53',
'f13': '0',
'f24': '0',
'b32': '2238295518.48',
'f8': '9160769.15',
'c28': '0',
'c39': '0',
'b33': '0',
'f7': '20463.47',
'e10': '0',
'e25': '0',
'f25': '0',
'c34': '2238295518.48',
'c33': '0',
'b34': '2238295518.48',
'b36': '0',
'b37': '0',
'b38': '0',
'e5': '0',
'e13': '0',
'b28': '0',
'c32': '2238295518.48',
'e26': '0',
'f26': '0',
'b5': '5000',
'c16': '0',
'c23': '140371448.17',
'b7': '0',
'b24': '36781754.02',
'b25': '107419202.89',
'c25': '103589694.15',
'b19': '70189502.41',
'b12': '0',
'b6': '69239663.31',
'c15': '0',
'b16': '0',
'b21': '0',
'c5': '5000',
'zth': '002',
'b15': '0',
'gsdm': '01001002',
'c21': '0',
'c12': '0',
'kjqj': '10',
'c14': '630624',
'c24': '36781754.02',
'b26': '0',
'c26': '0',
'b27': '132208837.16',
'c6': '109057053.78',
'c7': '0',
'b8': '0',
'b10': '343315.1',
'c11': '0',
'b13': '0',
'c27': '0',
'kjnd': '2023',
'c8': '0',
'c9': '0',
'c10': '1278187.1',
'b11': '0',
'c13': '0',
'b23': '144200956.91',
'b9': '0',
'b14': '601524',
'b22': '0',
'c22': '0',
'c19': '110970864.88',
'f30': '110630687.88',
'f43': '0',
'e43': '136038345.9',
'e41': '0',
'f42': '0',
'e39': '2341885212.63',
'f39': '2341885212.63',
'f38': '0',
'e40': '0',
'e38': '0',
'f41': '0',
'f45': '2452515900.51',
'e30': '69849325.41',
'f40': '0',
'e42': '0',
'e44': '2477923558.53',
'f44': '2341885212.63',
'e45': '2547772883.94'
};
// 将对象转化为数组
let objArray = Object.entries(randomObj);
// 对数组进行排序(这里我们以键的字典序进行排序)
objArray.sort((a, b) => a[0].localeCompare(b[0]));
// 将排序后的数组转化回对象
let sortedObj = Object.fromEntries(objArray);
console.log('sortedObj', sortedObj);
let objKeys = Object.keys(sortedObj); // 对象键的数组
console.log('keys', objKeys);
let alpha = ''; // 初始化开头字母
objKeys.forEach((itm, idx) => {
let curAlpha = itm.substring(0, 1); // 当前键的开头字母
let curNum = +itm.substring(1); // 当前键的末尾数字
if (idx === 0) {
alpha = curAlpha;
}
if (curAlpha !== alpha && idx < objKeys.length - 1) { // 防止数组下标越界
// 开头字母不同了
alpha = curAlpha;
curNum = +objKeys[idx + 1].substring(1); // Uncaught TypeError: Cannot read properties of undefined (reading 'substring')
}
if (idx < objKeys.length - 1) {
let nxtNum = +objKeys[idx + 1].substring(1); // curNum的相邻键
let diffVal = nxtNum - curNum;
if (diffVal > 1) {
// curNum 和 nxtNum 不连续,进行补充
let num = curNum + 1;
for (let i = 0; i < diffVal - 1; i++) {
sortedObj[curAlpha + num] = '补充' + curAlpha + num;
num++;
}
}
}
});
console.log(sortedObj);
测试结果如下: