如何将数组数据转换为URL参数?

3

假设我可以获取以下数据:

data = ["s=abc","t=123","a=567","b=789"]

我可以如何处理这些数据以获取像"?s=abc&t=123&a=567&b=789"这样的url字符串?

我写了一些代码

for(i=0;i<data.length;i++){
  data[i].split("=");
}

但是我被卡住了一段时间。

有人能帮我吗? 顺便说一下,数据长度可能每次都不同。

谢谢。

6个回答

3
使用join方法和&连接符,将数组元素拼接成一个字符串,然后在该字符串前面添加?即可得到目标url字符串,格式如下:"?s=abc&t=123&a=567&b=789"。请参考以下示例代码实现:

var data = ["s=abc", "t=123", "a=567", "b=789"];
var params = '?' + data.join('&');

console.log(params);
document.write(params);

注意:如果您的参数包含特殊字符,您可以使用encodeURIComponent进行编码。


1

1
你可以使用join函数。它将数组转换为字符串,然后将&作为分隔符添加,再连接"?";
var new_data = '?'+data.join('&');

1
循环遍历数据数组,并将每个元素与和号“&”连接起来,使用“slice”方法删除最后一个“&”。保留html标签。
data = ["s=abc","t=123","a=567","b=789"];
    link="?";
    for(i=0;i<data.length;i++){
      link+=data[i]+"&";
    }
    link=link.slice(0,-1);
    console.log(link);

请在您的答案中添加一些解释。 - silwar

0
如果您想对值进行编码 - 如果值尚未被编码

data = ["s=abc", "t=123", "a=567", "b=7 89"]
var params = data.map(function(item) {
  return item.replace(/=(.*)/, function(m, value) {
    return '=' + encodeURIComponent(value)
  })
}).join('&');
snippet.log(params)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>


0
我会使用哈希表来存储键值对,并利用jQuery将参数序列化为可用的字符串。
var serializedParams = {
  s: 'abc',
  t: '123',
  a: '567',
  b: '789'
};

$.param(serializedParams);

// Returns:
// s=abc&t=123&a=567&b=789

或者你可以手动构建字符串。

var data = ["s=abc","t=123","a=567","b=789"];

data.join('&');

// Returns:
// s=abc&t=123&a=567&b=789

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接