gpt4 book ai didi

javascript - .map() 是每次迭代返回一次还是在所有迭代完成后返回一次?

转载 作者:行者123 更新时间:2023-11-28 14:42:01 25 4
gpt4 key购买 nike

我正在尝试学习 .map() 方法背后的机制。

问题 1) 在下面的测试代码中,.map() 中的第一条语句是 let output = [];。每次迭代开始时输出是否重置为空数组?

问题 2).map() 中的最后一条语句是 return output; 是否 .map() > 在每次迭代结束时返回一个输出值(在本例中返回 3 个),还是存储所有迭代的输出并在所有迭代完成后返回一个新的完整数组?

非常感谢您的帮助!

"use strict";

var creatureArray, updatedCreatureArray;

creatureArray = [
['zombie', 30, 1, 'bite', 0, 5],
['skeleton', 10, 2, 'sword', 1, 10],
['orc', 15, 4, 'club', 1, 7]
];

updatedCreatureArray = creatureArray
.map((value) => {
let output = [];
output = ['species'].concat(value);
output[6] += 100;
return output;
});

console.log(updatedCreatureArray);

最佳答案

Question 1) In the test code below the first statement inside .map() is let output = [];. Is output reset to an empty array at the beginning of each iteration?

传递给 .map() 的函数将 output 声明为局部变量,因此其值不会在迭代之间共享。它总是以空数组开始,然后在迭代结束时超出范围。

Question 2) The last statement in .map() is return output; Does .map() return an output value at the end of each iteration (in this case 3 returns) or does it store up the output from all of the iterations and return a new, completed array after all of the iterations are done?

一个函数如果被调用一次就只能返回一次,.map()也不异常(exception)。在所有迭代完成之前它不会返回。 .map() 的返回值是一个数组,其中包含使用原始数组中的每个元素执行函数参数时产生的所有返回值。

如果您了解如何实现 .map(),也许会更清楚:

Array.prototype.map = function(callback) {
const result = [];
for (let i = 0; i < this.length; i++) {
result[i] = callback(this[i], i, this);
}
return result;
};

(此实现是一种简化。real Array.prototype.map 还具有一些其他功能。)

关于javascript - .map() 是每次迭代返回一次还是在所有迭代完成后返回一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47734573/

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