1

我有以下示例代码

   var obj = { a: {b:1, c:3 }, d :{f:5}}
        var string = "";
        for(var key in obj){
            for(var subkey in obj[key]){
             string += subkey + "="+ obj[key][subkey] + "&";
             //for last iteration "&" should not be added.
         }
    }
   console.log(string);

输出是

b=1&c=3&f=5& 

所需输出

b=1&c=3&f=5
4

4 回答 4

9

另一种方法是:

var obj = { a: {b:1, c:3 }, d :{f:5}},
  array = [];
for(var key in obj){
  for(var subkey in obj[key]){
    array.push(subkey + "="+ obj[key][subkey]);
  }
}
console.log(array.join('&'));
于 2013-05-22T09:55:43.313 回答
4

如果您正在创建 url 的查询部分,我会使用此处提供的解决方案: 如何在 Javascript 中创建查询参数?

如果没有,只需删除编码部分:)

相关代码副本:

// Usage:
//   var data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
//   var querystring = EncodeQueryData(data);
// 
function EncodeQueryData(data)
{
   var ret = [];
   for (var d in data)
      ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));
   return ret.join("&");
}
于 2013-05-22T09:57:03.690 回答
2

在 for 循环之后,您可以执行以下操作:string = string.slice(0,-1)

于 2013-05-22T09:51:16.157 回答
1

对于每个迭代,首先附加第一个迭代&除外。

var obj = { a: {b:1, c:3 }, d :{f:5}}
var string = "";
for(var key in obj){
   for(var subkey in obj[key]){
      if(string !== "") string += "&";
      string += subkey + "=" + obj[key][subkey];
    }
}
于 2013-05-22T09:50:53.110 回答