2015-09-23 208 views
3

比方說,我能得到像下面一些數據:如何從數組數據中創建一個url參數?

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

我如何處理這些數據以獲得一個URL字符串,如 「S = ABC & T = 123 & A = 567 & B = 789?」

我寫一些代碼

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

,但堅持了一段時間。

任何人都可以幫助我嗎?順便說一句,data.length可能每次都不一樣。

謝謝。

回答

3

我如何處理這些數據以獲得一個URL字符串像"?s=abc&t=123&a=567&b=789"

使用join&膠水。這將通過使用&作爲粘連來連接數組的元素,然後您可以將?添加到生成的字符串中。

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

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

注:如果你的參數包含特殊字符,你可以使用encodeURIComponent來編碼。

1

你可以使用加入功能。它將數組轉換爲字符串,然後添加&作爲分隔符,然後連接「?」;

var new_data = '?'+data.join('&'); 
1

循環通過您的數據陣列和級聯符號'&'與每個元素以及使用slice除去最後'&'

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); 
+0

請給您的答案添加一些解釋 – 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 
相關問題