function getObj(object) {
let url = ''
for (const key in object) {
if (Object.hasOwnProperty.call(object, key)) {
const element = object[key];
if (element) {
url = url.concat(key,'=',element,'&')
}
}
}
url = url.slice(0,url.length-1)
return url
}
将一个对象转换为一个URL查询字符串。
使用for...in
循环遍历object
对象的所有可枚举属性。
使用Object.hasOwnProperty
方法来检查object
对象自身(不包括其原型链)是否具有名为key
的属性。这是为了确保我们只处理对象自身的属性,而不是继承自原型链的属性。
获取object
对象中名为key
的属性的值,并将其存储在变量element
中。
检查element
是否有“真实”值。在JavaScript中,以下值被认为是“假值”:false
, 0
, ""
(空字符串), null
, undefined
, 和NaN
。如果element
不是这些值之一,它将进入此条件块。
使用concat
方法将key
、=
、element
和&
拼接到url
字符串上。这实际上是构建一个URL查询字符串的标准格式,例如key1=value1&key2=value2
。
使用slice
方法从url
字符串中删除最后一个字符(即最后的&
字符)。因为我们是在循环中为每个属性都添加了&
,所以最后一个属性后面会有一个多余的&
,需要将其删除
示例:
const obj = {
name: "Alice",
age: 25,
city: "New York"
};
const queryString = getObj(obj);
console.log(queryString); // 输出: "name=Alice&age=25&city=New%20York"
注意:在上面的示例中,字符串"New York"
被URL编码为"New%20York"
,因为在URL中,空格字符需要被替换为%20
。此函数没有处理URL编码,所以在实际应用中,您可能需要使用如encodeURIComponent
这样的函数来处理属性值中的特殊字符。