Ich habe eine Funktion geschrieben, die dies tut:
var getUrlParams = function (url) {
var params = {};
(url + '?').split('?')[1].split('&').forEach(function (pair) {
pair = (pair + '=').split('=').map(decodeURIComponent);
if (pair[0].length) {
params[pair[0]] = pair[1];
}
});
return params;
};
Update 26.05.2017, hier ist eine ES7-Implementierung (läuft mit Babel-Preset Stage 0, 1, 2 oder 3):
const getUrlParams = url => `${url}?`.split('?')[1]
.split('&').reduce((params, pair) =>
((key, val) => key ? {...params, [key]: val} : params)
(...`${pair}=`.split('=').map(decodeURIComponent)), {});
Einige Tests:
console.log(getUrlParams('https://google.com/foo?a=1&b=2&c')); // Wird {a: '1', b: '2', c: ''} ausgeben
console.log(getUrlParams('/foo?a=1&b=2&c')); // Wird {a: '1', b: '2', c: ''} ausgeben
console.log(getUrlParams('?a=1&b=2&c')); // Wird {a: '1', b: '2', c: ''} ausgeben
console.log(getUrlParams('https://google.com/')); // Wird {} ausgeben
console.log(getUrlParams('a=1&b=2&c')); // Wird {} ausgeben
Update 26.03.2018, hier ist eine TypeScript-Implementierung:
const getUrlParams = (search: string) => `${search}?`
.split('?')[1]
.split('&')
.reduce(
(params: object, pair: string) => {
const [key, value] = `${pair}=`
.split('=')
.map(decodeURIComponent)
return key.length > 0 ? { ...params, [key]: value } : params
},
{}
)
Update 13.02.2019, hier ist eine aktualisierte TypeScript-Implementierung, die mit TypeScript 3 funktioniert:
interface IParams { [key: string]: string }
const paramReducer = (params: IParams, pair: string): IParams => {
const [key, value] = `${pair}=`.split('=').map(decodeURIComponent)
return key.length > 0 ? { ...params, [key]: value } : params
}
const getUrlParams = (search: string): IParams =>
`${search}?`.split('?')[1].split('&').reduce(paramReducer, {})
9 Stimmen
Bevor Sie eine neue Antwort posten, bedenken Sie bitte, dass es bereits 50+ Antworten auf diese Frage gibt. Stellen Sie bitte sicher, dass Ihre Antwort Informationen enthält, die nicht unter den vorhandenen Antworten zu finden sind.
0 Stimmen
Var url_string = "example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; //window.location.href var url = new URL(url_string); var c = url.searchParams.get("c"); console.log(c);
1 Stimmen
Es ist verrückt, dass eine, was sollte sein, einfache Frage für JS 50+ Antworten erfordert :/