2014-11-03 144 views
1

我试图生成JavaScript对象数组urlstring,如:如何将对象数组转换为url字符串?

var array = [{'name': 'foo', 'value': '2'}, 
      {'name': 'foo', 'value': '2,8'}, 
      {'name': 'foo', 'value': '2,10,3'} 
      ]; 

// url ==> foo=2&foo=2,8&foo=2,10,3 
+0

我相信这是可能的,随着一点点努力。你有什么尝试? – 2014-11-03 15:20:57

+0

我试过$ .param(数组)但不是不工作 – 2014-11-03 15:22:27

回答

4

你可以做到这一点

var url = ""; 
array.forEach(function(e){ 
    url += e.name + "=" + e.value + "&"; 
}); 
url = url.trim("&"); 
1

你会通过阵列需要循环,确定数组项是否在第一或没有(这样他们将与&符号分隔,并使用JSON字段名。

var queryString = ""; 
for (var i = 0; i++; i < array.length) { 
    if (i > 0) { 
     queryString = queryString + "&"; 
    } 
    queryString = queryString + array[i]["name"] + "=" + array[i]["value"]; 
} 
3

为了安全起见,你要编码的合作mponent件:

var array = [{'name': 'foo', 'value': '2'}, 
 
      {'name': 'foo', 'value': '2,8'}, 
 
      {'name': 'foo', 'value': '2,10,3'} 
 
      ]; 
 

 
var parts = []; 
 

 
for (var i = 0; i < array.length; ++i) 
 
    parts.push(encodeURIComponent(array[i].name) + '=' + 
 
      encodeURIComponent(array[i].value)); 
 

 
var url = parts.join('&'); 
 

 
console.log(url);

1

试试这个代码:

var array = [{'name': 'foo', 'value': '2'}, 
      {'name': 'foo', 'value': '2,8'}, 
      {'name': 'foo', 'value': '2,10,3'} 
      ]; 
var output = ""; 

for(var i = 0; i < array.length; i++){ 
    output = output + array[i].name+"="+array[i].value+"&" 
} 

output = output.substring(0, output.length-1); 
alert(output) 

这里fiddle

0

无需循环和辅助瓦尔,阵列内建的方法去做。

Array.map + Array.join

> array.map(p => p.name + '=' + p.value).join('&') 
'foo=2&foo=2,8&foo=2,10,3' 

> array.map(function(param){ 
    return param.name + '=' + param.value 
    }).join('&') 
'foo=2&foo=2,8&foo=2,10,3' 

安全使用(但预计不会OP的输出):

> array.map(p => encodeURIComponent(p.name) + '=' + encodeURIComponent(p.value)).join('&') 
'foo=2&foo=2%2C8&foo=2%2C10%2C3'