我有下面的函数,它将查询放入一个对象。它工作,但添加了对象的网址,我不是真正的正则表达式savy足以找出如何删除网址,只包括变量。
function urlToObj(url)
{
var obj = {};
url.replace(
new RegExp("([^?=&]+)(=([^&]*))?", "g"),
function($0, $1, $2, $3) { obj[$1] = $3; }
);
return obj;
}
E.g。
url = http://www.example.com/hello/world.php?var1=1&var2=2
url = http://www.example.com/hello/world.asp?var1=1&var2=2
url = http://www.example.com/hello/world?var1=1&var2=2
obj = urlToObj(url);
输出
obj { var1="1", var2="2", http://www.example.com/hello/world.php="" }
obj { var1="1", var2="2", http://www.example.com/hello/world.asp="" }
obj { var1="1", var2="2", http://www.example.com/hello/world="" }
我希望删除网址,使其看起来像这样
obj { var1="1", var2="2" }
我出错的任何例子和信息都会很棒。
由于
答案 0 :(得分:0)
此扩展创建单个查询字符串对象,以便快速,可读地查询字符串修改和创建。这个插件提供了一种简单的方法来获取页面的查询字符串,并用很少的代码创建它的修改版本。
答案 1 :(得分:0)
一些黑客怎么办? : - )
function urlToObj ( url ) {
var obj = {};
url.replace(
new RegExp("([^?=&]+)(=([^&]*))?", "g"),
function($0, $1, $2, $3) { obj[$1] = $3; }
);
// Now, you know you've got an empty string for your url
// So let's loop through the object and remove this property
for ( var prop in obj ) {
// You only want the objects properties, nothing inherited
if ( obj.hasOwnProperty( prop ) ) {
// If it's an empty string
if ( obj[ prop ] === '' ) {
// Delete it!
delete obj[ prop ]
}
}
}
return obj;
}