query: {
reach: {
grades: '0, 1, 2',
upReach: '',
reachName: '',
institution: {
institutionId: 3,
levelPath: '-0000000-0000002-0000003'
}
},
page: 1,
rows: 15
}
转化为
?reach.grades=0, 1, 2&reach.upReach=&reach.reachName=&reach.institution.institutionId=3&reach.institution.levelPath=-0000000-0000002-0000003&page=1&rows=15
function objectToQuery() {
let obj = arguments[0];
let prefix = arguments[1];
if (typeof obj !== "object") return "";
const attrs = Object.keys(obj);
return attrs.reduce((query, attr, index) => {
// 判断是否是第一层第一个循环
if (index === 0 && !prefix) query += "?";
if (typeof obj[attr] === "object") {
const subPrefix = prefix ? `${prefix}.${attr}` : attr;
query += this.objectToQuery(obj[attr], subPrefix);
} else {
if (prefix) {
query += `${prefix}.${attr}=${obj[attr]}`;
} else {
query += `${attr}=${obj[attr]}`;
}
}
// 判断是否是第一层最后一个循环
if (index !== attrs.length - 1) query += "&";
return query;
}, "");
}