js forEach可以采取其他输入

时间:2017-02-27 01:58:38

标签: javascript

function addToArr(num, arr) {
  arr.push(num);
}
theArr = [1, 2, 3, 4];
myArr = [];
theArr.forEach(addToArr(ele, theArr));

console.log(myArr);

我想编写一个可以在forEach()中使用的函数,它可以将不同的数组作为参数 - 我可以推送到。

2 个答案:

答案 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)