Js实现Object按key排序

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

  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((item) => {
if (item !== '') {
str += `${str ? '&' : ''}${item}=${params[item]}`;
}
});
}
console.log(str);
return str;
};
sortParams({
'c': 112,
'a': 4546,
'k': 12,
'b': ''
})
  • 运行结果:

运行结果