使用 Chrome 控制台,这是我的输入和输出:
[0].map(Array);
[[0, 0, [0]]]; // output
这里发生了什么?
编辑
这让我好奇的原因是因为像
[0].map(String);
会回来
["0"];
而不是
["0", "0", "String"]
最佳答案
.map()
function正在使用三个参数调用 Array()
函数,数组元素的值为 0
,该元素的索引,也是 0
,以及对整个数组的引用。
所以就像这样做:
var a = [0];
var index = 0
Array(a[index], index, a); // create array with three elements
Array()
返回的数组随后成为 .map()
创建的数组的第一个元素,因此在您的 中嵌套了额外的层次[[0, 0, [0]]]
结果。
关于您的编辑的编辑:当您说 [0].map(String);
导致 String()
被调用时使用相同的三个参数,如 String(a[index], index, a)
,但是 String()
函数忽略除第一个参数之外的所有参数,而 Array()
使用所有参数提供的参数。
关于javascript - .map() 在这种情况下在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230125/