gpt4 book ai didi

javascript - 回调函数未执行

转载 作者:行者123 更新时间:2023-12-01 01:54:37 26 4
gpt4 key购买 nike

返回的数组应该是[1,2,3],但是[3,4,5]被记录到控制台。有人可以向我解释一下为什么吗?

function forEach(array, callback) {
var newA = []
for (var i = 0; i < array.length; i++) {
newA.push(callback(array[i]));
}
}

function map(array, callback) {
forEach(array, callback)
return array
}

console.log(map([3, 4, 5], n => n - 2));

最佳答案

您的 map() 函数要求 forEach() 就地修改数组,而不是创建新数组。所以应该是:

function forEach(array, callback) {
for (var i = 0; i < array.length; i++) {
array[i] = callback(array[i]);
}
}

function map(array, callback) {
forEach(array, callback);
return array;
}

console.log(map([3, 4, 5], n => n - 2));

如果 map() 不应该修改其参数,您可以在调用 forEach() 之前复制该数组。

function forEach(array, callback) {
for (var i = 0; i < array.length; i++) {
array[i] = callback(array[i]);
}
}

function map(array, callback) {
array = array.slice();
forEach(array, callback);
return array;
}

var testArray = [3, 4, 5];
console.log(map(testArray, n => n - 2));
console.log(testArray);

关于javascript - 回调函数未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51143193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com