84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
将http: //www.a.com/admin/index.php#route=main/nav&user=tom&id=123/profile
后的参数转换成:
[ {"router":"main"}, { "nav":"", "user":"tom", "id":"123" }, {"profile":""} ]
除了循环变量有没有更简洁的方法
坐等更好方案:
'use strict'; var url = 'http: //www.a.com/index.php?route=main&nav&user=tom&id=123&profile'; var querys = url .substring(url.indexOf('?') + 1) .split('&') .map((query) => query.split('=')) .reduce((params, pairs) => (params[pairs[0]] = pairs[1] || '', params), {}); console.log(querys); //{ route: 'main', nav: '', user: 'tom', id: '123', profile: '' }
var url = location.search.substr(1); param = {}; console.log(url); url.replace(/([^?&]+)=([^?&]+)/g, function(s, v, k) { param[v] = decodeURIComponent(k); return k + '=' + v; }); console.log(param);
http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
var url = 'http: //www.a.com/admin/index.php?route=main/nav=&user=tom&id=123/profile', result = []; url.substring(url.indexOf('?') + 1) .replace(/[^\/]+/g, function(objstr) { var obj = {}, empty = false; objstr.replace(/([^\/&=]+)(=([^\/&=]+)?)?/g, function(s, a, b, c) { if(a && b && c){ obj[a] = c; }else if(a && !c){ obj[a] = ''; }else{ empty = true; } }); if(!empty){ result.push(obj); } }); console.log(result);
我觉得用正则表达式将简单的问题搞复杂了。本来就一个很简单的字符串分解的工作,却要弄出一个很复杂的正则表达式,正则表达式看起来很反人类的说。1楼的同学用了太多jquery的函数。也不是我喜欢的。简单的工作就简单的解决即可。速度快无依赖。可以试试下面的代码:
坐等更好方案:
http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
我觉得用正则表达式将简单的问题搞复杂了。本来就一个很简单的字符串分解的工作,却要弄出一个很复杂的正则表达式,正则表达式看起来很反人类的说。1楼的同学用了太多jquery的函数。也不是我喜欢的。简单的工作就简单的解决即可。速度快无依赖。
可以试试下面的代码: