gpt4 book ai didi

javascript - 如何使用 for 循环实现 map() 函数?

转载 作者:行者123 更新时间:2023-11-30 09:17:07 24 4
gpt4 key购买 nike

我是初学者,我仍在努力理解一些概念。我基本上必须使用 for 循环重写 map() 函数的行为。

作为类(class)练习,部分代码已经提供给我:

// the global Array
var s = [23, 65, 98, 5];

Array.prototype.myMap = function(callback){
var newArray = [];
// Add your code below this line



// Add your code above this line
return newArray;
};

var new_s = s.myMap(function(item){
return item * 2;
});
console.log(new_s);

我是这样想的:map 是一个以函数作为参数的函数,所以括号中的“回调”必须是一个函数,因为它的目标是对我需要的数组的每个元素执行该函数实际上是一个 for 循环并将数组作为参数传递。

这就是我写的:

Array.prototype.myMap = function(callback){
var newArray = [];
// Add your code below this line
for(let i = 0; i < this.length; i++){
newArray.push(this[i].callback);
}
// Add your code above this line
return newArray;
}

我基本上放置了一个 for 循环,其中“this”应该是使用 map() 函数的数组,但我不确定它在逻辑上是否正确。然后我将通过使用“回调”函数给循环中的实际元素给出的结果插入数组。

不幸的是,结果是一个空字符串数组。

这是控制台向我显示的内容:

,,,

先谢谢你,希望你能帮忙弄清楚

最佳答案

您需要使用this[i] 的当前值调用回调

var s = [23, 65, 98, 5];
Array.prototype.myMap = function(callback){
var newArray = [];
// Add your code below this line
for(let i = 0; i < this.length; i++){
newArray.push(callback(this[i])); //pass the value of this[i] to the callback function.
}
// Add your code above this line
return newArray;
}
var new_s = s.myMap(function(item){
return item * 2;
});
console.log(new_s);

关于javascript - 如何使用 for 循环实现 map() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54312524/

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