function addToArr(num, arr) {
arr.push(num);
}
theArr = [1, 2, 3, 4];
myArr = [];
theArr.forEach(addToArr(ele, theArr));
console.log(myArr);
我想编写一个可以在forEach()中使用的函数,它可以将不同的数组作为参数 - 我可以推送到。
答案 0 :(得分:3)
传递给forEach
的参数必须是一个函数,这意味着您的addToArr
需要返回一个函数。这通常称为currying,部分应用或闭包。
function addToArr(arr) {
return function(num) {
arr.push(num);
};
}
var arr = [1, 2, 3, 4];
var myArr = [];
arr.forEach(addToArr(myArr));
console.log(myArr);

在ES6中,使用箭头功能编写起来要容易得多。
const addToArr = arr => num => arr.push(num);
答案 1 :(得分:1)
或者,forEach
的第二个参数用作传递的回调中的this
值,因此以下内容也应该有效:
function addToArray (x) {
this.push(x)
}
var array = [1, 2, 3, 4]
var otherArray = []
array.forEach(addToArray, otherArray)
console.log(otherArray)

如果你的意图只是制作原始数组的副本,我建议改为使用Array#slice
:
var array = [1, 2, 3, 4]
var otherArray = array.slice()
console.log(otherArray)