—— 此篇开始 ——
什么是查询字符串
我们把所有被引号包裹的内容都叫做字符串,因为字符串填充的内容不一样,我们做了一些细致的分类:
1.全部由数字组成的:数字字符串: '123456789'
2.带有html格式的字符串:html格式字符串: '<p>abcd</p>'
3.查询字符串:格式key=value&key=value 例子:'name=zhangsan&password=123456&gender=男'
作用:常常用来做url查询参数的解析,在编程时我们往往需要把一个对象信息变成查询字符串格式,或者把查询字符串格式变成一个对象信息
把一个对象信息变成查询字符串
方法:由于对象内的每一个key和value,在查询字符串中都会出现,我们需要拿到对象内的每一个key和value,于是需要遍历对象,把拿到的内容组装成一个完整的字符串,把最后组装完毕的结果字符串中最后一个字符去掉,把转换好的结果当做返回值
代码:
function queryStringify(obj){
var str = "" //存放查询字符串
for(var k in obj){
str += k + '=' + obj[k] + '&' //将遍历出来的数据拼接成"key=value&"的形式赋值给空字符串
}
str = str.slice(0,-1) //删除字符串末尾的"&"
return str;
}
var obj = {
name:'jack',
age:18,
gender:'男',
classroom:2109
}
console.log (queryStringify(obj));
结果:
把查询字符串变成一个对象信息
方法:明白这个查询字符串内需要有多少条信息,使用&把字符串分割,循环遍历切割好的数据,在每一条数据中,"="左边的是对象内的key,"="右边的是对象内的value,再次使用"="切割每一个小数据,最后向对象内填充
代码:
var str = 'name=jack&age=18&gender=男&classroom=2109'
function parseQueryString(s,b){
var obj = {} //用来存放最终结果
var arr = [] //用来存放用split()分割后的数据
arr = str.split('&') //将查询字符串通过"&"切割成5个数据
arr.forEach(function(item){ //循环遍历数组
var tmp = item.split('=') //将遍历出来的每一个数据通过"="切割
var key = tmp[0] //将"="左边的数据赋值为key
var value = tmp[1] 将"="右边的数据赋值为value
obj[key] = value //填充对象
});
return obj;
}
console.log (parseQueryString(str))
结果: