项目要求往后端传参的时候 json串根据key的名字 a-z 排序,并剔除空值
思路:
将json的key 和 value 拆到数组,数组按照key排序后,遍历数组,赋值。
当值为object对象 再进行递归
贴代码~
function sortJson(json) {
let map = new Map();
for (let k in json) {
map.set(k, json[k]);
}
let arrayObj = Array.from(map);
arrayObj.sort((a, b) => {
return a[0].localeCompare(b[0]);
});
let obj = {};
for (let i in arrayObj) {
let k = arrayObj[i][0];
let value = arrayObj[i][1];
if (!(value === null || value === undefined)) {
if (Array.isArray(value)) {
value.forEach(item => {
if (typeof item == 'object') {
item = sortJson(item);
}
});
} else {
if (typeof value == 'object') {
value = sortJson(value);
}
}
obj[k] = value;
}
}
return obj;
}