数据对象转换成url地址参数格式

  1. 需要先将数据对象转换成url地址参数格式;
  2. 再将其AES加密;
  3. 将其和baseURL拼接。
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;
	}, "");
}

// 测试效果
let data = {
	a: 1,
	b: 2,
	c: 3,
	d: {
		e: 5,
		f: 6
	},
}

console.log(objectToQuery(data)); // ?a=1&b=2&c=3&d[e]=5&d[f]=6

console.log(objectToQuery(data.d, "d")); // d[e]=5&d[f]=6