首页 > 试题广场 >

解析指定 url 地址,返回其中的 query 参数对象,可

[问答题]
解析指定 url 地址,返回其中的 query 参数对象,可以不考虑执行环境的兼容性。 如: http://www.wacai.com/login?a=1&b=2&a=3&c
返回:

//如果只有一个对应值,显示为字符串,一个以上为数组形式,完全和要求符合
function getQuery(urlStr){
    var arr = urlStr.split("?")[1].split("&");
    let obj = {};
    for(let i = 0;i<arr.length;i++){
        let arrQ = arr[i].split("=");
        if(arrQ[1]==undefined){
            obj[arrQ[0]] = ""
        }else if(!obj.hasOwnProperty(arrQ[0])){
            obj[arrQ[0]]=arrQ[1];
        }else{
            if(typeof obj[arrQ[0]] =="string"){
                obj[arrQ[0]] = obj[arrQ[0]].split("");
                obj[arrQ[0]].push(arrQ[1]);
            }else{
                obj[arrQ[0]].push(arrQ[1]);
            }
        }
    }
    return obj;
};

编辑于 2017-10-12 22:33:01 回复(1)
function urlParse(url) {
	var result = {}
	var elems = url.split('?')[1].split('&')

	elems.forEach(function(e){
		var keyVal = e.split('='),
			key = keyVal[0]
			val = keyVal[1] || ''		//没有value的情况下表示为‘’而非undefined

		if(result[key] !== void 0){		//属性有两个以上的值,存储为字符串数组
			result[key] = [].concat(result[key]).concat(val)
		}else{							//只有一个属性值,以字符串形式存储
			result[key] = val
		}
	})

	return result
}

发表于 2017-08-21 17:40:26 回复(0)
function getQuery(url){
	var queryArr=url.split('?')[1].split('&');
	var obj={};
	for(var i=0;i<queryArr.length;i++){
		var temp=queryArr[i].split('=');
		if (temp.length===1) {
			obj[temp[0]]='';
		}else{
			if (!obj[temp[0]]) {
				obj[temp[0]]=temp[1];
			}else{
				obj[temp[0]]=[obj[temp[0]]];
				obj[temp[0]].push(temp[1]);
			}
		}
	}
	return obj;
}

发表于 2017-08-01 10:07:11 回复(1)
用一个函数处理即可
function findQuery(url){
	var index = url.indexOf('?');
	var search = url.substring(index+1);
	var searchArr = search.split('&');
	var query = {}
	searchArr.forEach(function(ele){
		var arr = ele.split("=");
		if(!arr[1]){
			arr[1]='';
		}
		console.log(query[arr[0]]);
		if(query[arr[0]]){
			var b = [].concat(query[arr[0]]);
			b.push(arr[1]);
			query[arr[0]]=b;
		} else{
			query[arr[0]]=arr[1]
		}
	});
	return query;
}

发表于 2017-02-16 23:49:29 回复(0)
function getUrl(str){
var sub=str.substring(str.indexOf("?")+1);
var obj={};
var arr=sub.split("&");
for(var i=0;i<arr.length;i++){
	arr[i]=arr[i].split("=");
}
for(var j=0;j<arr.length;j++){
	if(obj.hasOwnProperty(arr[j][0])){
		obj[arr[j][0]]=[].concat(obj[arr[j][0]]).concat(arr[j][1]);
	}else{
		obj[arr[j][0]]=(arr[j][1])?[arr[j][1]]:"";
	}
}
  return obj;
}

发表于 2017-09-03 19:18:02 回复(0)
function queryParse(url){
    var index=url.indexOf('?');
    var subStr=url.substring(index+1);
     var array=subStr.split('&');
    var ret=new Object();
    for(var i=0;i<array.length;i++){
            var unit=array[i];
            var unitArray=unit.split('=');
            if(!ret.hasOwnProperty(unitArray[0])){
                ret[unitArray[0]]=unitArray[1];
            }else{
                var valArray=[];
                valArray.push(ret[unitArray[0]]);
                valArray.push(unitArray[1]);
                ret[unitArray[0]]=valArray;
            }
     }
    return ret;
}
发表于 2017-09-02 16:20:38 回复(0)
function getQuery(url){
	var str = url.split('?')[1];
	var arr = str.split('&');
	var obj = {};
	
	arr.forEach(function(item){
		var key = item.split('=')[0];
		var val = item.split('=')[1] || '';

		if(obj[key]){
			obj[key] = [].concat(obj[key]).concat(val);
		}else{
			obj[key] = val;
		}

	})
	return obj;
}


编辑于 2017-08-25 16:55:28 回复(0)
function getURLData(url){
    var arr=url.split("?")[1].split("&");
    var obj={};
    arr.forEach(function(element,index) {
        var arrTemp=element.split("=");
        var key=arrTemp[0];
        var value=arrTemp[1]||'';   //键值不存在时用''
        if(obj[key]){     //属性有两个及两个以上的值
           obj[key]=[].concat(obj[key],value);
        }else{      //属性只有一个值时
            obj[key]=value;
        }
    }, this);
    return obj;
}

发表于 2017-08-25 14:40:38 回复(0)
function getQuery(url) { let query = url.split("?")[1].split("&"); let obj = {}; for (let i = 0; i < query.length; i++) { let t = query[i].split("="); if(!Reflect.has(obj,t[0])){ obj[t[0]]=[]
        } if(t[1]===undefined){ t[1]="";
        } obj[t[0]].push(t[1])
    } return obj; }

发表于 2017-08-25 10:14:20 回复(0)
function parse(url){
        var query=url.slice(url.indexOf('?')+1);
        var obj={};
        query.replace(/([^=&])(?:=([^&]))?/g,(_,$1,$2)=>{
          if($2==undefined)$2='';
          if(obj[$1])obj[$1]=[obj[$1],$2];
          else obj[$1]=$2;
        })
        //console.log('obj:',obj);
        return obj;
      }

编辑于 2017-08-22 11:55:08 回复(0)
先用?分割,取最后一部分,然后用,&分割,然后用等号分
发表于 2017-04-10 21:07:47 回复(0)
function query(url) {
    var temp = {};
    for (var item of url.split('?')[1].split('&')){
        item = item.split('=');
        if(!temp[item[0]]){
            temp[item[0]] = item[1];
        } else {
            //不知道题目是undefined还是' '?
            item[1] ? temp[item[0]] = 
                Array.prototype.concat(temp[item[0]], item[1]) 
                : temp[item[0]] = ' ';
        }
    }
    return temp
}

编辑于 2017-03-18 16:08:48 回复(0)
var URL =window.location.href,
发表于 2017-01-17 11:42:09 回复(0)