为什么 forEach 不会遍历整个数组?



当我只在forEach方法中使用console.log()时,它会记录所有Array元素,但是当我在它里面使用。push(array.pop())时,它停在一些元素上?

const sentence = ['sense.','make', 'all', 'will', 'This'];
function reverseArray(array) {
debugger;
let newArray = [];
array.forEach((arr) => {
newArray.push(array.pop())
console.log(arr) 
})
return newArray;
}
console.log(reverseArray(sentence))
// RESULT [
//  "This",
//  "will",
//  "all"
// ]

但是这里可以

const sentence = ['sense.','make', 'all', 'will', 'This'];
function reverseArray(array) {
debugger;
array.forEach((arr) => {
console.log(arr) 
})
}
reverseArray(sentence)
// Now it works
// RESULT
// sense.
// VM94:7 make
// VM94:7 all
// VM94:7 will
// VM94:7 This

你正在修改你的数组,同时迭代它。相反,你应该像这样复制它:

Array.from(array).forEach((elm) => {
newArray.push(array.pop())
console.log(elm)
})
// another variant for old browsers
array.slice().forEach((elm) => {
newArray.push(array.pop())
console.log(elm)
})

或者,由于在回调中不需要元素,您应该使用简单的forloop

const count = array.length
for (let i=0; i < count i++) {
newArray.push(array.pop())
console.log(arr) 
}

相关内容

  • 没有找到相关文章