我正在尝试使用forEach()模仿array.map()
。
var map = function () {
var empMap = [];
numbers.forEach(function (number) {
empMap.push(number);
console.log('empMap', empMap);
});
return(empMap);
}
var numbers = [1, 2, 3];
//implement this line
var doubles = map(numbers, function (number) {
return number * 2;
});
console.log(doubles); // [2, 4, 6]
因此,我有一个带有值的
numbers
数组,我有自己的map function
遍历该数组,然后将值推入一个空数组empMap
稍后,我将调用此map函数,并将每个值乘以2并打印出来。
我应该得到double的输出为[2,4,6],而不是[1,2,3]。不知道我要去哪里错。
这是相同的[codepen] 1。
最佳答案
您需要将数组和回调作为参数传递,然后实际使用回调。
var map = function (array, callback) {
var empMap = [];
array.forEach(function (number) {
empMap.push(callback(number))
});
return(empMap);
}
var numbers = [1, 2, 3];
var doubles = map(numbers, function (number) {
return number * 2;
});
console.log(doubles); // [2, 4, 6]