1

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

例如,有一个数组arr,正常的方法是:

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

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

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

4

2 回答 2

1

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

for (const subArray of arr.slice(0, -1)) { ... }
于 2018-07-24T16:31:39.313 回答
0

您还可以使用生成器:

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

可用作:

for(const entry of skipLast(array)) 
于 2018-07-24T16:42:01.247 回答