题目描述
获取 url 中的参数
- 指定参数名称,返回该参数的值 或者 空字符串
- 不指定参数名称,返回全部的参数对象 或者 {}
- 如果存在多个同名参数,则返回数组
示例1
输入
http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe key
输出
[1, 2, 3]
题解
function getUrlParam(sUrl, sKey) {
var a = sUrl.split("?");
var b = a[1].split("#");
b = b[0].split("&");
var c = {};
b.map(function (item, index) {
item = item.split("=");
if (!c[item[0]]) c[item[0]] = [item[1]];
else c[item[0]].push(item[1]);
});
if (sKey) {
if (!c[sKey]) return "";
else if (c[sKey].length === 1) return c[sKey][0];
else return c[sKey];
} else return c;
}
个人感受是题目不难但是分类讨论真的很烦…所以把分类讨论放到最后再判断。
前面的思路就是遍历,判断是否是否存在item,若不存在则新建一个对象存入;若存在则直接push。
官方测试样例
var a = function () {
var a = getUrlParam(
"http://www.nowcoder.com?key=1&key=2&key=3&key=4&test=4#hehe",
"key"
);
return a.join("") === "1234";
};