gpt4 book ai didi

javascript - 有人可以解释方法映射的这种特殊用途吗?

转载 作者:行者123 更新时间:2023-12-01 15:14:48 24 4
gpt4 key购买 nike

我将此视为代码战挑战的解决方案,您需要在不使用反向方法且仅使用 30 位备用的情况下反转数组:

reverse=a=>[...a].map(a.pop,a)
现在我知道使用 map 的方式是这样的:
array.map(item => somethingelse)
所以我真的不明白在这种情况下如何使用 map ,有人可以解释一下吗?

最佳答案

第一个参数.map接受是在每次迭代时运行的回调。

array.map(item => somethingelse)
相当于
const callback = item => somethingelse;
array.map(callback);
第二个参数 .map接受是 this运行回调时使用的值。为了显示:

const obj = {};
const arr = [0, 1, 2];
const arr2 = arr.map(
function() { console.log(this === obj) },
obj
);

引用 this 通常很奇怪在 .map 内,但这是可能的,通过传递第二个参数,您可以确定它所指的内容。 Array.prototype.pop需要调用上下文 - this value - 要知道您要从哪个数组中弹出项目,所以在原始代码中:
reverse=a=>[...a].map(a.pop,a)
a必须作为 .map 的第二个参数传递去工作。 a.pop相当于 Array.prototype.map在这里,因为它是作为回调传递的:
// Equivalent code:
reverse=a=>[...a].map(Array.prototype.pop, a);
[...a].map(部分被用作调用 .pop() 的快捷方式 n次,其中 n是原始数组的长度。返回的每个项目都会导致新数组中的新项目 - 原始数组中的最后一个项目首先弹出并放入新数组中的第一个位置,依此类推。

关于javascript - 有人可以解释方法映射的这种特殊用途吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63733243/

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