这可以在不改变数组的情况下完成吗?
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
答案 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)
})