数组自引用映射 - 非常奇怪的结果

mel*_*okb 4 javascript arrays map self-reference

在尝试使用一些不同的方法生成JavaScript数组时,我偶然发现了一个奇怪的结果.使用mappush的自参考(阵列DEMO):

a=[1,1,1,1,1,1,1,1,1,1];
a=a.map(a.push,a);
Run Code Online (Sandbox Code Playgroud)

我得到以下结果(在Chrome中):

[13,16,19,22,25,28,31,34,37,40]
Run Code Online (Sandbox Code Playgroud)

有谁能解释为什么?

tva*_*son 5

对于每个元素a,push使用该元素,该元素的索引和遍历的数组进行调用.然后,对于数组中的每个元素,我们添加这三个附加元素.这说明原始数组中每个元素的长度增加了3.push的结果是添加元素后数组的长度,因此得到的数组(from map)是一个数组,a在每次push回调完成后保存数组的长度.

请参阅文档以获取地图推送.