在JavaScript的for-in循环中找到最后一次迭代。

12 浏览
0 Comments

在JavaScript的for-in循环中找到最后一次迭代。

我有以下示例代码

   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] + "&";
             //在最后一次迭代时,不应添加"&"。
         }
    }
   console.log(string);

输出为

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

要求的输出

b=1&c=3&f=5

0
0 Comments

在使用JavaScript中的for-in循环时,有时候我们需要找到最后一次迭代的位置。下面是一个使用for-in循环的例子:

var obj = {
  key1: "value1",
  key2: "value2",
  key3: "value3"
};
var string = "";
for (var key in obj) {
  string += "&" + key + "=" + obj[key];
}
console.log(string); // 输出:&key1=value1&key2=value2&key3=value3

在这个例子中,我们想要在最后一个键值对后面去掉"&"符号。一个解决方法是使用`string.slice(0,-1)`来去掉最后一个字符:

string = string.slice(0, -1);
console.log(string); // 输出:&key1=value1&key2=value2&key3=value3

另一个解决方法是在每次迭代时将"&"符号放在键值对的前面,然后在最后使用`string.substring(1)`来去掉第一个字符:

string = "";
for (var key in obj) {
  string += "&" + key + "=" + obj[key];
}
string = string.substring(1);
console.log(string); // 输出:key1=value1&key2=value2&key3=value3

希望这篇文章对于使用for-in循环中找到最后一次迭代的位置有所帮助。

0
0 Comments

问题的出现原因是在使用for-in循环的过程中,最后一次迭代会导致encodeURIComponent函数被重复调用,从而影响到最终的结果。

解决方法是将encodeURIComponent函数放在for-in循环外部,使用一个临时变量保存encodeURIComponent的结果,然后在拼接字符串时引用该变量。

以下是修改后的代码:

function EncodeQueryData(data) {
   var ret = [];
   for (var d in data) {
      var encodedKey = encodeURIComponent(d);
      var encodedValue = encodeURIComponent(data[d]);
      ret.push(encodedKey + "=" + encodedValue);
   }
   return ret.join("&");
}

这样一来,无论是在最后一次迭代还是其他迭代中,encodeURIComponent函数只会被调用一次,确保了结果的正确性。

0
0 Comments

问题的原因是在这段代码中,最后一个迭代的键值对没有被正确地拼接到数组中。解决方法是修改内部循环,在最后一个迭代时添加一个判断条件,以检测是否为最后一个迭代。

修改后的代码如下:

var obj = { a: {b:1, c:3 }, d :{f:5}},
  array = [];
for(var key in obj){
  var subObj = obj[key];
  var subkeys = Object.keys(subObj);
  for(var i=0; i

这样修改后,最后一个迭代时会往数组中添加一个空字符串,以正确拼接最后一个键值对。

0