问题遇到的现象和发生背景
今天用js写代码的时候遇到一个题目,把url转换成一个数组。
比如:http://localhost:8080/pro?a=1&b=%E5%BC%A0%E4%B8%89&c=undefined 转换为 { a: '1', b: '张三', c: 'false' }
遇到的问题:想要把最后的undefined修改为false,当我用split获得“?”以后的字符串,然后再用split获得“&”分割的数组。把数组带入for of循环进一步处理。这一部分代码如下:
for(p of param) {
if(p.split("=")[1] == "undefined") {
// p.split("=")[1] = "false"
// result[p.split("=")[0]] = p.split("=")[1], 结果还是undefined,false没有修改成功
result[p.split("=")[0]] = "false";
} else {
result[p.split("=")[0]] = p.split("=")[1];
}
}
使用注释部分无法赋值false给p.split("=")[1],输出结果依旧为undefined。测试了一下,只要是给p.split("=")[1]赋值都是是赋不上去的,想请教一下这是为什么呢?
问题我自己解决了,因为每次p.split("=")都会重新切割一次p,所以两次p.split("=")[1]中的内容是不想等的,这时候给前面的p.split("=")[1]赋值,后面是拿不到的。应该设置一个变量new = p.split("=")[1]再去给new赋值!