-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[js] 第12天 写一个获取当前url查询字符串中的参数的方法 #36
Comments
function params() {
const search = window.location.search;
search = search.substr(1, search.length);
const res = {};
if (!search) return res;
search.split('&').map(item => {
const [key, value] = item.split('=');
res[key] = decodeURIComponent(value);
});
return res;
} |
function urlParam(){ const param = {}; location.search.replace(/([^&=?]+)=([^&]+)/g,(m,$1,$2)=> param[$1] = $2); return param; } |
不考虑IE的话,直接使用url api |
|
|
|
window.location.search.match(/(\w)+(?==)/g) |
const getLocationParams = () => {
const paramsMap = new Map();
if (location.search) {
// 第一个字符串为 ?
location.search
.substr(1)
.split("&")
.forEach((param) => {
const [key, value] = param.split("=");
paramsMap.set(key, value);
});
}
return paramsMap;
};
const getLocationParam = (key) => getLocationParams().get(key); |
const parsingURLSearch = url => {
const searchs = url.match(/[^?&=]*=[^?&=]*/g)
return (
searchs &&
searchs.reduce(
(pre, s) => ({
...pre,
[s.split('=')[0]]: s.split('=')[1]
}),
{}
)
)
} |
const url = "www.baidu.com?asd=asd%asd&dsa=2";
function getParamsByUrl(url) {
const obj = {};
url.replace(/([^?&]+)=([^?&]+)/g, (__, c1, c2) => {
obj[c1] = c2;
});
return obj
}
console.log(getParamsByUrl(url));//{ asd: 'asd%asd', dsa: '2' } |
|
|
@coderfe const定义的常量不能赋值吧 |
|
function getQueryString(name) {
const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
const r = location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
} |
const url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%B5%8F%E8%A7%88%E5%99%A8%E5%86%85%E6%A0%B8%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B&rsv_pq=d10f9e03002ad5ae&rsv_t=7308xq%2FYDOMBWPsvXbUpTRo6FpYwkCts0RWBt1BKtKXc0%2FPcfNNKNoe%2Bxxc&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=2&rsv_sug1=1&rsv_sug7=001&rsv_n=2&rsv_sug2=0&inputT=682&rsv_sug4=703&rsv_sug=9"
res = url.substr(url.indexOf('?') + 1).split('&').reduce((pre,cur)=>{
const [key, value] = cur.split("=");
pre.set(key,value)
return pre
},new Map())
console.log(res.get('ie'))
|
/**
* @param {string} url
* @return {object}
*/
function queryParams(url) {
const queryStr = url.split("?")[1];
if (!queryStr) return {};
return queryStr.split("&").reduce((obj, str) => {
const [k, v] = str.split("=");
obj[k] = v;
return obj;
}, {});
} |
//第12天 写一个获取当前url查询字符串中的参数的方法
function params(url) {
var kvs = url.substring(url.indexOf("?") + 1).split("&");
var res = {};
kvs.map(param => {
var [key, value] = param.split("=");
res[key] = value;
});
return res;
}
const url =
"https://s.taobao.com/search?q=%E7%83%AD%E6%B0%B4%E5%A3%B6&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306";
const res = params(url);
console.log(res.ie); |
function getQueryString(name) { |
function getQuery(str) {
const arr = str.split('?')
if (!arr[1]) return {}
return arr[1].split('&').reduce((acc, cur) => {
const val = cur.split('=')
return {
...acc,
[decodeURIComponent(val[0])]: decodeURIComponent(val[1])
}
}, {})
} |
let str=window.location.search.replace("?","");
function getParams(str){
let params={};
let ary = str.split("&");
ary.forEach(e=>{
let results=e.split("=");
params[results[0]]=results[1];
});
return params;
} |
function getRequest (str) { |
let url = 'https://www.raven.com?a=param1&b=param2'
function getParams(url) {
let reg = /[^?&=]+=[^&=]*/g
let arr, map = new Map()
while((arr = reg.exec(url)) !== null) {
let mapArr = arr[0].split('=')
map.set(mapArr[0], mapArr[1])
}
return map
}
console.log(getParams(url)) // Map { 'a' => 'param1', 'b' => 'param2' } |
const url = "https://www.baidu.com/?a=1&b=2&c=3";
const getQuery = str => {
const startIndex = str.indexOf('?');
const endIndex = str.lastIndexOf('?');
if (startIndex !== endIndex) {
return url;
}
const queryString = str.slice(startIndex + 1);
const map = {};
queryString.split("&")
.forEach(item => {
if (item) {
const [key, value] = item.split("=");
map[key] = value;
}
});
return map;
};
console.log(getQuery(url)); |
大概思路是这样,应该可以更完善 |
let url='baidu.com?aaa=1&bbb=2'; |
楼上大佬的, 之前一直理解不了[^&=?],后来懂了,[]里面^是取反,而且除了‘/’其他的都不用转义
|
|
function fn() {
let url = window.location.search;
url = url.replace(/\?/, '');
return url.replace(/&/g, ',')
} |
function getQuerySring(key) {
let querySring = window.location.search;
if (querySring) {
let queryStringWithoutQuestionMark = querySring.slice(1);
let querySringArr = queryStringWithoutQuestionMark.split('&');
let value = null;
querySringArr.forEach((item) => {
if (item.split('=')[0] === key) {
value = item.split('=')[1];
}
})
return value;
} else {
return null;
}
} |
|
function params() { |
function urlParam(){ |
function getURLParams(search = '') {
const params = Object.create(null);
search.replace(/([^&=?]+)=([^&]+)/g, (m, $1, $2) => {
console.log(m, $1, $2)
params[$1] = $2;
});
return params;
}
console.log(getURLParams('?name=name&age=3'));
console.log(getURLParams('?name=name&&age=3'));
console.log(getURLParams('?'));
console.log(getURLParams('')); 注意: |
const getParams = () => {
const serachStr = window.location.search.slice(1)
let res = {}
serachStr.split('&').map(item => {
const [k, v] = item.split('=')
res[k] = v
})
return res
} |
function queryUrlParams(url) {
const res = {};
if (url.indexOf("?") === -1) {
return res;
}
if (typeof URL !== "undefined") {
const urlObj = new URL(url);
for (const [key, value] of urlObj.searchParams.entries()) {
res[key] = value;
}
return res;
} else {
const search = url.split("?")[1];
const pairs = search.split("&");
return pairs.reduce((acc, cur) => {
const [key, value] = cur.split("=");
acc[key] = value;
return acc;
}, res);
}
} |
|
|
const url = "http://www.h-camel.com/show/36.html?a=b&b=c"; data.forEach((item, index) => { |
function getParams(url){ |
|
正则表达式function getUrlParam(url) {
const param = {};
url.replace(/([^&=?]+)=([^&]+)/g, (match, $1, $2) => (param[$1] = $2));
// const obj = {};
// url.replace(/(\w*)(=)(\w*)/g, (match, key, operator, value) => {
// obj[key] = value;
// });
return param;
}
console.log(getUrlParam("http://localhost:8080?a=1&b=2&c=3&d=")); split方法// split方法
function getUrlParam() {
const search = window.location.search;
search.slice(1);
// search = search.substr(1);
const res = {};
if (!search) {
return res;
}
search.split("&").map((item) => {
const [key, value] = item.split("=");
// decodeURIComponent()将已编码 URI 中所有能识别的转义序列转换成原字符
res[key] = decodeURIComponent(value);
});
return res;
} |
|
<script> // 获取url中的参数 function getParams(url){ const paramsObj = url.split('?')[1] const params = paramsObj.split('&') const res = {} params.forEach(value => { const paramsKey = value.split('=')[0] res[paramsKey] = value.split('=')[1] }) console.log(res) } const myUrl = 'http://www.baidu.com?name=zs&age=18&sex=gender' getParams(myUrl) // {name: 'zs', age: '18', sex: 'gender'} </script> |
function GetUrlParament(data) { |
const getQuery = () => { |
// 写一个获取当前url查询字符串中的参数的方法 |
function getQueryParams() {
let paramsStr = window.location.search
let queryArr = paramsStr.substr(1).split('&')
let params = []
queryArr.map((item) => {
params.push(item.split('=')[0])
})
console.log(params);
}
getQueryParams() |
在hash路由后面加 所以想到的是用正则来处理这种情况: function getParams(url) {
let paramsObj = {};
let regExp = /\?([^#]+)/;
let match = url.match(regExp);
if (match && match[1]) {
match[1].split('&').forEach(item => {
let [key, value] = item.split('=');
if (value) paramsObj[key] = value;
})
}
return paramsObj;
}
let paramsObj = getParams('http://127.0.0.1:8080#/home?a&b=234');
console.log(paramsObj) // {b: '234'}
let paramsObj2 = getParams('http://127.0.0.1:8080?a&b=234#/home');
console.log(paramsObj2) // {b: '234'} |
function getUrlStr(url){ console.log(getUrlStr('https://mp.csdn.net/mdeditor?ad=2&wq=5')) |
需要注意一下参数中有数组的情况,比如 http://127.0.0.1:5501/index.html?hostName=xxx3&ports=1&ports=5 原生 API 中的 getAll() 很好可以参考 |
window.location.search |
function getUrlParms(url) { |
function getParams (url) {
const arr = url.split('?')
const obj = {}
if (arr.length > 1) {
arr[1].split('&').forEach((v) => {
const [key, value] = v.split('=')
obj[key] = value
})
}
return obj
} |
第12天 写一个获取当前url查询字符串中的参数的方法
The text was updated successfully, but these errors were encountered: