js 补充不连续的对象属性,并给其排序;

// 无序且不连续的对象属性;
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);

测试结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值