查询字符串(queryString)

给你一段字符串'foo=bar&abc=xyz&abc=123',queryString.parse('foo=bar&abc=xyz&abc=123')。

把上面那段字符串转成下面这种格式:

 

        const queryString = {
			    parse() {
			        let arg = arguments[0];
			        let obj = {}
			        let arr = arg.split("&")
			        arr = arr.map(item => {
			            return item.split("=");
			        })	
			        for(var i=0;i<arr.length;i++){
			            var item = arr[i][0];
			            if(obj[item]){
			                obj[item] = [obj[item]].concat([arr[i][1]])
			            }else{
			                obj[item]=item
			            }
			        }
			        return obj;
			    }
			};
			console.log(queryString.parse('foo=bar&abc=xyz&abc=123'));

上面那段代码是把它转成图片 需要的那种格式 但是相对来说代码量比较多,于是就有了下面这种方法:

           const queryString = {
			    parse(str) {
			       return str.split("&").reduce((prev,next)=>{
					   const [key,val] = next.split("=")
					   // 对于重复存在的key值转换成数组方式
					   if(!prev[key]){
						   prev[key] = val
					   }else{
						   prve[key] = [val].concat(prev[key])
					   }
				   })
				   return prev
			    }
			};

这段代码同样可以实现图片所要的效果,而且相对于上段代码来说代码量相对较少,就是不太好理解。

            queryString.objToStr = function(obj){
				//取出它的key
				const keys = Object.keys(obj)
				// 遍历这个key的集合取出每一个key
				return keys.reduce((prev,key)=>{
					//获取对应的值
					const curr = obj[key]
					// 判断它是否是一个数组
					if(curr instanceof Array){
						// 将数组转换成一个由key=val组成的字符串的集合然后合并到原数组里
						prev = prev.concat(curr.map(item=>key+"="+item))
					}
					//将当前的key与他的值组合成一个字符串扔给统一的数组
					else{
						prev.push(key+"="+obj[key])
					}
					return prev
				},[].join("&"))
			}

👆这段代码是将图片所需要的那种效果转变成原来的字符串,需要的自取。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值