5

在尝试一些不同的方法来生成 JavaScript 数组时,我偶然发现了一个奇怪的结果。使用自map引用push数组(DEMO):

a=[1,1,1,1,1,1,1,1,1,1];
a=a.map(a.push,a);

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

[13,16,19,22,25,28,31,34,37,40]

谁能解释为什么?

4

2 回答 2

6

对于 , 中的每个元素apush都使用该元素、该元素的索引和被遍历的数组来调用。然后,对于数组中的每个元素,我们添加这三个附加元素。这解释了原始数组中每个元素的长度增加了三。push 的结果是元素添加后数组的长度,因此结果数组 (from map) 是一个数组,保存a每次 push 回调完成后数组的长度。

请参阅mappush的文档。

于 2013-01-25T05:37:09.943 回答
2

它与push作为新长度的返回值有关。不知道为什么它增加了 3。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/push

返回
调用方法的对象的新长度属性。

于 2013-01-25T05:33:14.100 回答