2016-10-27 14 views
2

私は、次の辞書があるとします。どのように辞書の要素を「参加」する

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

どのように私は簡単にこのような文字列に変換することができますか?

foo=0&bar=1 

それで私を助けることができる任意の組み込みの方法はありますか?

+0

JSON.stringifyを使用できますか? – user2182349

+0

@ user2182349私は言及したように文字列をフォーマットする必要があります – FrozenHeart

+0

FormDataがあります... – user2182349

答えて

3

あなたは純粋のためにあなたが

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

を行うことができますジャバスクリプト、$.param(data, true);

かを使用するのjQueryを使用している場合

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メソッドでこれを実現できます(オブジェクトの値を1つの文字列に "減らす"ため)。

簡潔な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を確認してください。

関連する問題