将对象转换为Url拼接参数
const obj2str = obj => {
let arr = Object.entries(obj);
arr.forEach((value, index) => {
arr[index] = value.join('=');
});
return arr.join('&');
};
实例:
var data = { "name": "jie", "age" : 20 };
console.log(obj2str(data)); //output: name=jie&age=20
扩展
1、 Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组。
var data = { "name": "jie", "age" : 20 };
console.log(Object.entries(data));
//output: [['name','jie'], ['age', 20]]
for (const [key, value] of Object.entries(data)) {
console.log(`${key}: ${value}`);
}
// output:
// name: jie
// age: 20
Object.entries()的Polyfill
if (!Object.entries) {
Object.entries = function (obj) {
let ownProps = Object.keys(obj),
len = ownProps.length,
resArray = new Array(len); // preallocate the Array
while (len--) {
resArray[len] = [ownProps[len], obj[ownProps[len]]];
}
return resArray;
};
}
2、Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
var data = { "name": "jie", "age" : 20 };
console.log(Object.keys(data)); //output: ['name','age']
3、Object.values()方法会返回一个由一个给定对象的自身可枚举属性值组成的数组。
var data = { "name": "jie", "age" : 20 };
console.log(Object.values(data)); //output: ['jie',20]
Object.values()的Polyfill
if (!Object.values) {
Object.values = function (obj) {
if (obj !== Object(obj))
throw new TypeError("Object.values called on a non-object");
const values = [];
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
values.push(obj[key]);
}
}
return values;
};
}