在循环javascript中查找最后一次迭代

时间:2013-05-22 09:46:54

标签: javascript

我有以下示例代码

   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 个答案:

答案 0 :(得分: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('&'));

答案 1 :(得分:4)

如果您要创建网址的查询部分,我会使用此处提供的解决方案: How to create query parameters in 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("&");
}

答案 2 :(得分:2)

在for循环之后,你可以这样做:string = string.slice(0,-1)

答案 3 :(得分: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];
    }
}