在遍历数组时,我希望将元素推送到一个新数组。然而,该数组仍然为空

When looping through an array I wish to push the elements to a new array. That array however remains empty

当我运行这个循环时,它接受一个包含八个数字的数组,它循环遍历并将它们简单地推送到一个名为结果的全局数组。出于某种原因,当我 console.log 这个数组在循环之外时它 returns 0[]。我希望它 return 来自另一个数组的八个数字。

const results = []

const validate = arr => {
  for(let i = 0; i < arr.length; i++){
    results.push(arr[i])
  }

}
console.log(results)

如果您包含原始数字数组并调用迭代它的函数,您的代码将有效:

let arr = [1,2,3,4,5,6,7,8];
let results = [];

function validate() {
  for(let i = 0; i < arr.length; i++){
    results.push(arr[i])
  }
}

validate();
console.log(results)

但是,Array.prototype.map() 方法就是为做这种事情而设计的:

let arr = [2,4,6,8];

let results = arr.map(function(element){
  return element; // Returns item to resulting array
});

console.log(results)

那是因为你必须 运行 函数 验证,现在你只是打印 results[] 没有任何项目。

validate(arr);

const results = []
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const validate = arr => {
  for (let i = 0; i < arr.length; i++) {
    results.push(arr[i])
  }

}
validate(arr);
console.log(results);

但是如果你想复制,你可以使用:

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const results = [...arr];
console.log(results);

您在这里所做的只是简单地定义了一个函数,用于复制传入的数组的内容。你需要调用函数 validate 具有适当的值。

const results = []

const validate = arr => {
  for(let i = 0; i < arr.length; i++){
    results.push(arr[i])
  }

}
validate([1,2,3,4,5,6,7,8]);
console.log(results);

您错过了函数调用。

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const result = [];
arr.map((num) => result.push(num));
console.log(result);

const results = []
const validate = (arr) => {
    console.log(arr)
    arr.forEach((value)=>{
        results.push(value)
    });
}

validate([1,2,3,4,5,6,7,8]);
console.log(results);