1、面试题:讲一个location.search字符串转为对象

本文介绍了一种将URL查询字符串转换为JavaScript对象的方法,通过解析字符串并处理重复参数,实现更高效的数据提取。适用于前端开发中对URL参数的快速读取与操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>location.search字符串转为对象</title>
	</head>
	<body>
    </body>
    <script>
       var str="?uname=lili&upwd=123456&favs=running&favs=swimming";
       function obj(str){
        //创建一个空对象接收转换结果
        var obj={};
        //查询字符串,arr.slice截取?后面的,str.split按照&分割为数组
        str=str.slice("1").split("&");
        //console.log(str);
        //遍历str
        for(var key in str){
            //以=分割,左边属性名,右边属性值。[uanme,lili...],下标分别0 1
            var strs=str[key].split("=");
            //console.log(strs);
            //若obj空对象中没有这个属性
            if(strs[0] in obj ==false){
                //就在obj对象中添加属性名strs[0],属性值[1]。{uname:"lili"...}
                obj[ strs[0] ]=strs[1]
                //否则 如果数组对象中有这个属性
                //属性的 属性值是数组,直接把重复的属性值 加入到数组中
            }else if(Array.isArray( obj[ strs[0] ] )){
                obj[ strs[0] ].push( strs[1] )
            }else{//否则 这个属性值不是数组,要先转为数组,再加入到数组对象中
                obj[ strs[0] ]=obj[ strs[0] ].split(" ");
                obj[ strs[0] ].push( strs[1] ) 
            }   
        }
        return obj;
    }
        var obj=obj(str);
        console.log(obj);
    </script>
</html>

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值