【问题标题】:Make for...of to skip from looping the last element使 for...of 跳过循环最后一个元素
【发布时间】:2019-01-01 08:45:24
【问题描述】:

如果存在使用for...of 迭代的二维数组,跳过最后一个元素的最佳方法是什么?

例如,有一个数组arr,通常的做法是:

for(const subArray of arr) { ... }

在循环之前跳过它可以使用的最后一个元素:arr.slice(0, -1); 可以正常工作,但它会删除应该避免的数据。

有没有办法让它跳过最后一个元素而不丢失数据?

【问题讨论】:

  • 您可以保留一个索引并检查您是否在最后一个元素上
  • 只使用一个普通的旧 for 循环
  • 或者只是每次检查if (subArray === arr[arr.length - 1]) { /* last element */ }
  • 我认为slice 是正确的方法。它返回一个浅拷贝,因此不会影响原始数组:for(const subArray of arr.slice(0, -1)) { ... }
  • for (var i = 0; i

标签: javascript arrays for-loop for-of-loop


【解决方案1】:

slice() 不会改变数组,而是返回一个新数组(不像splice(),它会改变数组),因此可以安全使用:

for (const subArray of arr.slice(0, -1)) { ... }

【讨论】:

    【解决方案2】:

    您也可以使用生成器:

    function* skipLast(array, numOfEntries = 1) {
      for(let i = 0; i < array.length - numOfEntries; i++)
         yield array[i];
    }
    

    可用作:

    for(const entry of skipLast(array)) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 2018-11-21
      相关资源
      最近更新 更多