2014-11-03 142 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'