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

时间:2017-03-23 08:16:26

标签: 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

5 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:3)

index

中使用forEach

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

arr.forEach(function(value, index) {
  if ( index != 0 ) {console.log(value) }
});

答案 2 :(得分:1)



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

arr.forEach(function(value, index) {
  return index == 0 ? true : console.log(value), true;
});




答案 3 :(得分:0)

arr.forEach(function(value, index) {
    if(index !== 0) {
        console.log(value);
    }
});

如果该值不等于第一个数组项

,则会触发这个小if语句

答案 4 :(得分:0)

尽管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)
})