Javascript 替换数组值

Javascript 替换数组值,javascript,arrays,url,query-string,Javascript,Arrays,Url,Query String,我想从URL查询字符串中获取数据,并将其显示在HTML文档的主体中。我无法让脚本将+符号替换为空白 示例URL:www.mywebsite.com/?item=Sandwich&bread=White+bread 在HTML正文中,item的文本字段将显示“Sandwich”,而bread的文本字段将显示“White+bread”。如何用空格替换+呢 下面是我用来从URL获取值的函数 function querystring(key) { var re=new RegExp('(?:\\

我想从URL查询字符串中获取数据,并将其显示在HTML文档的主体中。我无法让脚本将+符号替换为空白

示例URL:www.mywebsite.com/?item=Sandwich&bread=White+bread

在HTML正文中,item的文本字段将显示“Sandwich”,而bread的文本字段将显示“White+bread”。如何用空格替换+呢

下面是我用来从URL获取值的函数

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r;
}

    $("span.item").text(querystring('item'));
    $("span.bread").text(querystring('bread'));
我尝试过使用它,但它告诉我数组没有替换函数

.replace(/\+/g, ' ')

您的函数返回一个数组,请尝试通过以下方式更改它:

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r[0];
}
然后你可以用你的替代品

.replace(/\+/g, ' ')

您的函数返回一个数组,请尝试通过以下方式更改它:

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r[0];
}
然后你可以用你的替代品

.replace(/\+/g, ' ')

您的函数返回一个数组,请尝试通过以下方式更改它:

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r[0];
}
然后你可以用你的替代品

.replace(/\+/g, ' ')

您的函数返回一个数组,请尝试通过以下方式更改它:

function querystring(key) {
    var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
    var r=[], m;
    while ((m=re.exec(document.location.search)) != null) r.push(m[1]);
    return r[0];
}
然后你可以用你的替代品

.replace(/\+/g, ' ')

我会用这样的东西替换你的函数,为了可读性,去掉正则表达式。它处理未定义的键/值,另外,您可以轻松地将其第一部分重构为parseQueryString函数,该函数返回当前
文档.location.search的字典

function querystring(key) {
   var hash = {};

   var pairs = document.location.search.substr(1).split('&');
   for(var i = 0; i < pairs.length; i++) {
       var tuple = pairs[i].split('=');
       hash[tuple[0]] = tuple[1];
   }

   var val = hash[key];
   return (val) ? val.replace(/\+/g, ' ') : undefined;
}

我会用这样的东西替换你的函数,为了可读性,去掉正则表达式。它处理未定义的键/值,另外,您可以轻松地将其第一部分重构为parseQueryString函数,该函数返回当前
文档.location.search的字典

function querystring(key) {
   var hash = {};

   var pairs = document.location.search.substr(1).split('&');
   for(var i = 0; i < pairs.length; i++) {
       var tuple = pairs[i].split('=');
       hash[tuple[0]] = tuple[1];
   }

   var val = hash[key];
   return (val) ? val.replace(/\+/g, ' ') : undefined;
}

我会用这样的东西替换你的函数,为了可读性,去掉正则表达式。它处理未定义的键/值,另外,您可以轻松地将其第一部分重构为parseQueryString函数,该函数返回当前
文档.location.search的字典

function querystring(key) {
   var hash = {};

   var pairs = document.location.search.substr(1).split('&');
   for(var i = 0; i < pairs.length; i++) {
       var tuple = pairs[i].split('=');
       hash[tuple[0]] = tuple[1];
   }

   var val = hash[key];
   return (val) ? val.replace(/\+/g, ' ') : undefined;
}

我会用这样的东西替换你的函数,为了可读性,去掉正则表达式。它处理未定义的键/值,另外,您可以轻松地将其第一部分重构为parseQueryString函数,该函数返回当前
文档.location.search的字典

function querystring(key) {
   var hash = {};

   var pairs = document.location.search.substr(1).split('&');
   for(var i = 0; i < pairs.length; i++) {
       var tuple = pairs[i].split('=');
       hash[tuple[0]] = tuple[1];
   }

   var val = hash[key];
   return (val) ? val.replace(/\+/g, ' ') : undefined;
}

这是因为数组没有替换方法。您尝试在哪里使用该
.replace()
调用?如果将它放在
while
循环中(比如
r.push(m[1]),则替换(…)
,它可能会起作用。另外,您为什么不使用许多用户创建的函数中的一个来执行此解析呢?有一些函数可以优化从查询字符串中检索键的值,并且更好地支持此类操作。例如-(我喜欢第二个答案)也许我没有正确理解这个问题,但为什么不使用
encodeURI()/decodeURI()
?谢谢,艾伦。我尝试过搜索,但我想我没有搜索正确的标记。这个解决方案效率更高,对我来说效果更完美。这是因为数组没有替换方法。你在哪里尝试过使用
.replace()
call?如果你把它放在
while
循环中(比如
r.push(m[1]。替换(…)
,它可能会起作用。另外,您为什么不使用许多用户创建的函数中的一个来执行此解析呢?有一些函数可以优化从查询字符串中检索键的值,并且更好地支持此类操作。例如-(我喜欢第二个答案)也许我没有正确理解这个问题,但为什么不使用
encodeURI()/decodeURI()
?谢谢,艾伦。我尝试过搜索,但我想我没有搜索正确的标记。这个解决方案效率更高,对我来说效果更完美。这是因为数组没有替换方法。你在哪里尝试过使用
.replace()
call?如果你把它放在
while
循环中(比如
r.push(m[1]。替换(…)
,它可能会起作用。另外,您为什么不使用许多用户创建的函数中的一个来执行此解析呢?有一些函数可以优化从查询字符串中检索键的值,并且更好地支持此类操作。例如-(我喜欢第二个答案)也许我没有正确理解这个问题,但为什么不使用
encodeURI()/decodeURI()
?谢谢,艾伦。我尝试过搜索,但我想我没有搜索正确的标记。这个解决方案效率更高,对我来说效果更完美。这是因为数组没有替换方法。你在哪里尝试过使用
.replace()
call?如果你把它放在
while
循环中(比如
r.push(m[1]。替换(…)
,它可能会起作用。另外,您为什么不使用许多用户创建的函数中的一个来执行此解析呢?有一些函数可以优化从查询字符串中检索键的值,并且更好地支持此类操作。例如-(我喜欢第二个答案)也许我没有正确理解这个问题,但是为什么不使用
encodeURI()/decodeURI()
?谢谢,艾伦。我尝试过搜索,但我想我没有搜索正确的标签。该解决方案更有效,对我来说也更完美。这是解决我问题的有效方法,但请参阅艾伦·金默·詹森在我的问题下的评论,以获得更好的解决方案。谢谢!这是解决我问题的有效方法,但请参阅所有Kimmer Jensen在我的问题下的评论,以获得更好的解决方案。谢谢!这是我问题的有效解决方案,但请参阅Allan Kimmer Jensen在我的问题下的评论,以获得更好的解决方案。谢谢!这是我问题的有效解决方案,但请参阅Allan Kimmer Jensen在我的问题下的评论,以获得更好的解决方案。谢谢!