如何识别 for.in 循环中的第一次迭代

How to identify the first iteration in a for..in loop

本文关键字:循环 第一次 迭代 in for 何识别 识别      更新时间:2023-09-26

我们有这样的循环:

for (var prop in obj) {
   if (obj.hasOwnProperty(prop) {
      // Here need operation only for first iteration (1)
      // Other operations
   }
}

我们如何识别 (1) 中的第一次迭代?

你可以

用于每个

array.forEach((element,index) => {
    if(index==0){
        // first element
        }else{
          // not first element  
        }
      });
如果

可以,请将其移出循环:

do_one_time_thing();
for (var prop in obj) {
   if (obj.hasOwnProperty(prop)) {
      // Other operations
   }
}

否则,设置一个标志,并在第一次迭代后降低它:

var first_iteration = true;
for (var prop in obj) {
   if (obj.hasOwnProperty(prop)) {
      if (first_iteration) {
          do_one_time_thing();
          first_iteration = false;
      }
      // Other operations
   }
}

由于没有循环计数器,因此您需要自己跟踪:

var first = true;
for (var prop in obj) {
   if (obj.hasOwnProperty(prop) {
      if (first) {
        first = false;
        // Here need operation only for first iteration (1)
      }
      // Other operations
   }
}

假设你不关心第一项是什么,那么你可以将Object.keys().forEach()一起使用以避免使用标志。

有了这个,你也不需要使用 .hasOwnProperty() ,因为Object.keys()为您处理。

Object.keys(obj).forEach(function(key, i) {
   if (i === 0) {
      console.log("first", obj[key]);
   }
   console.log(obj[key]);
});

属性不保证以可预测的顺序列出(如其他人所说)。

因此,您可以使用 Object.keys 将对象属性作为数组获取,对该数组进行排序并获取第一个元素:

var firstProperty = Object.keys(obj).sort()[0];
// firstValue = obj[firstProperty];