JavaScript内置方法如何跳过第一次迭代?

Nat*_*ipp 2 javascript arrays

这可以在不改变阵列的情况下完成吗?

let arr = [1, 2, 3, 4, 5];
arr.shift()  // works but mutates the array

arr.forEach(function(value) {
  console.log(value)
});

2
3
4
5
Run Code Online (Sandbox Code Playgroud)

gyr*_*yre 7

虽然array.slice(1).forEach(...)很优雅,但它确实创建了一个新数组。forEach您可以通过检查传递给(数组索引)的第二个属性是0, 还是“falsy”来避免这样做。如果您传递的函数恰好只执行单个表达式,您可以缩短语句:

if (i) expression()i && expression()

...这使得这个方法异常简洁。

let array = [1, 2, 3, 4, 5]

array.forEach(function (value, i) {
  if (i) console.log(value)
})

array.forEach(function (value, i) {
  i && console.log(value)
})
Run Code Online (Sandbox Code Playgroud)


Nin*_*olz 6

您可以使用Array#slice没有第一个元素的副本.

let arr = [1, 2, 3, 4, 5];

arr.slice(1).forEach(function(value) {
    console.log(value);
});
Run Code Online (Sandbox Code Playgroud)


Rob*_*zie 5

使用indexforEach

let arr = [1, 2, 3, 4, 5];

arr.forEach(function(value, index) {
  if ( index != 0 ) {console.log(value) }
});
Run Code Online (Sandbox Code Playgroud)