2016-10-27 33 views
2

假設我有以下的解釋:如何「加盟」字典元素

var d = { 
    'foo': 0, 
    'bar': 1 
}; 

我怎麼能輕鬆地將其轉換爲字符串這樣嗎?

foo=0&bar=1 

是否有任何內置方法可以幫助我?

+0

你可以使用JSON.stringify嗎? – user2182349

+0

@ user2182349不可以。我需要像我提到的格式字符串 – FrozenHeart

+0

有FormData ... – user2182349

回答

3

如果您在使用jQuery使用$.param(data, true);

,或者對於純JavaScript可以使用

function serialize(obj) { 
    var str = []; 
    for(var p in obj) 
    if (obj.hasOwnProperty(p)) { 
     str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
    } 
    return str.join("&"); 
} 
serialize(data); 
4

不確定內置的方法,但你可以簡單地做

Object.keys(d).map(function(key){ return key+"="+d[key] }).join("&") //outputs "foo=0&bar=1" 
1

var d = { 
 
    'foo': 0, 
 
    'bar': 1 
 
}; 
 
var finalString = ""; 
 

 
for(var key in d){ 
 
    finalString += key + "=" + d[key] + "&"; 
 
} 
 
finalString = finalString.slice(0, -1); 
 
console.log(finalString);

0

您可以使用reduce方法實現此目的(因爲您將對象的值「減少」爲單個字符串。

簡明ES6例子可能是這樣的:

Object.keys(d).reduce((a,b,i) => `${a}${i ? '&':''}${b}=${d[b]}`,'') 
0

使用減速功能:

var obj = { 
    'foo': 0, 
    'bar': 1 
}; 
var str = Object.keys(obj).reduce(function(acc, key, index) { 
    return acc + (index === 0 ? '' : '&') + key + '=' + obj[key]; 
}, ''); 
console.log(str) // => 'foo=0&bar=1' 

檢查working example