需求:请求参数名的首字母升序排列非空请求参数;

步骤:

  1. {d:'444',a: '111', c:'333',b:'222'} 按key升序排序得到 {a: '111',b:'222', c:'333',d:'444'};

  2. 舍弃值为空的项,如:{a:'',b:'22'} 则a项被舍弃;

示例代码:

const sortParams = (params = {}) => {
  // 注意:若待排序的参数不为空,则排序后的字符串结尾需要拼接字符:&
  // 主要是为了使 stringSignTemp 拼接成格式: 'a=11&b=22&nostr=...'
  let str = '';
  if (Object.keys(params).length !== 0) {
    // 需要排除值为空的参数,如: {a: '11',b:''} 则str里需要排除b;
    const keysList = (Object.keys(params)).sort((a, b) => a.localeCompare(b));
    console.log(keysList);
    keysList.forEach((key) => {
      const item = params[key];
      if (item !== '') {
        str += `${str ? '&' : ''}${key}=${item}`;
      }
    });
  }
  console.log(str);
  return str;
};

// 调用
sortParams({
  'c': 112,
  'a': 4546,
  'k': 12,
  'b': ''
})

运行结果:

{ c: 112, a: 4546, k: 12, b: ''}
a=4546&c=112&k=12
文章作者: 小森森
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小森森博客
博客 JavaScript
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝