【问题标题】:Last iteration in foreach loop with Object Javascript使用 Object Javascript 在 foreach 循环中的最后一次迭代
【发布时间】:2019-04-24 02:17:33
【问题描述】:

我有一个这样的对象。

objName {
 item1 : someItem,
 item2 : someItem,
 item3 : someItem,
}

现在属性的数量是动态的,并且可以增加未知数量,我正在像这样在这个对象的属性键中执行 foreach 循环。

Object.keys(objName).forEach(itemNumber => {
console.log(itemNumber);
});

我将如何检测它的最后一次迭代以执行新任务?

【问题讨论】:

  • 问题不清楚
  • 我需要检测最后一次迭代,比如声明一个 var 编号,该编号将在对象属性的长度等于 var 编号时递增,但由于我是新的 javascript 对象,我不知道从哪里开始。
  • 这里的对象长度键是3对吗?
  • 代码已更新抱歉...

标签: javascript javascript-objects


【解决方案1】:

您可以使用索引和数组参数来检查是否有下一个元素。您还可以检查当前索引是否相等长度 - 1 index == arr.length - 1

let objName = {
 item1 : "someItem",
 item2 : "someItem",
 item3 : "someItem",
}

Object.keys(objName).forEach((item, index, arr) => {
  console.log(item);
  if(!arr[index + 1]) console.log('End')
});

【讨论】:

  • 通过将长度减去1意味着这是最后一项?
  • 如果你有 3 个元素,那么长度为 3,但最后一个元素的索引将为 2,因为它从 0 开始。
  • 请问arr代表什么?
  • 数组是什么?对象和数组是不一样的,抱歉我对javascript对象及其方法不太熟悉
  • 它是对 forEach 所应用的数组的引用,在这种情况下它是一个对象键数组。
【解决方案2】:

首先找到对象的长度,如下所示:

var objLength= Object.keys(objName).length;

那么你可以这样使用:

var count = 0;

Object.keys(objName).forEach(item => {
    console.log(item);
    count++;
    if (count == objLength)
    {
        console.log("endOfLoop");
    }
});

【讨论】:

    【解决方案3】:

    您可以像下面的代码一样将索引和值传递给 forEach 函数,并使用 Object.keys(objName).length 获取对象长度,然后是最后一个成员 objName[value]

     var objName = {
     item1 : "someItem",
     item2 : "someItem",
     item3 : "someItem3",
    }
    Object.keys(objName).forEach((value, index) => {
    if(index==Object.keys(objName).length-1){
      console.log(objName[value]);
    }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多