相关疑难解决方法(0)

创建零填充JavaScript数组的最有效方法?

在JavaScript中创建任意长度零填充数组的最有效方法是什么?

javascript arrays

552
推荐指数
22
解决办法
32万
查看次数

Array.apply实际上在做什么

在阅读了这个SO问题后,我仍然对Array.apply实际上在做什么感到困惑.请考虑以下代码段:

new Array(5).map(function(){
  return new Array(5);
});
Run Code Online (Sandbox Code Playgroud)

我希望这可以初始化一个包含5个未定义条目的数组,然后映射它们创建一个5x5的二维数组);

相反,我只是得到数组,好像它从未映射过:

[undefined, undefined, undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)

当我在Array.apply调用中将构造函数调用包装到数组时,然后映射它,它按预期工作:

Array.apply(null, new Array(5)).map(function(){
  return new Array(5);
});
Run Code Online (Sandbox Code Playgroud)

导致;

[[undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined],
 [undefined, undefined, undefined, undefined, undefined]];
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?Array.apply是另一种调用new Array()或Array.prototype.constructor的方法吗?还有其他情况会有利吗?另外,为什么我的第一个方法没有在我发送的地图上接收?

谢谢!-Neil

javascript arrays constructor

33
推荐指数
2
解决办法
1万
查看次数

Array.apply(null,Array(9))vs new Array(9)

我正在尝试创建一个零数组,我可以使用以下方法获得所需的结果:

Array.apply(null, Array(9)).map(Number.prototype.valueOf, 0)
Run Code Online (Sandbox Code Playgroud)

但是如果我使用的话,我就错了:

new Array(9).map(Number.prototype.valueOf, 0)
Run Code Online (Sandbox Code Playgroud)

就此而言,任何映射结果的尝试都无法在映射上new Array(len)返回预期的数组.有人能帮助我理解为什么会这样吗?

javascript

6
推荐指数
0
解决办法
702
查看次数

`new Array(5).map()`如何工作?

我最近发现,映射一个未初始化的数组似乎并没有像我期望的那样工作.使用此代码:

function helloMap(value, index) {
    return "Hello " + index;
}

console.clear();

var initialArray = Array.apply(null, new Array(5));

console.log("Array initialised with apply:");
console.log(initialArray);
console.log(initialArray.map(helloMap));

var normalArray = new Array(5);

console.log("Array constructed normally");
console.log(normalArray);
console.log(normalArray.map(helloMap));
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper {
  max-height: 100% !important;
}
Run Code Online (Sandbox Code Playgroud)

尽管每个阵列的第一个输出是,但我得到了不同的结果[undefined, undefined, undefined, undefined, undefined].

我得到不同结果的事实意味着undefined这两个数组实际上是不同的.在第一个我怀疑该数组有5个项目,每个都是未定义的.在第二个数组是5项长,但没有什么,甚至没有在那里未定义...

这有点令人困惑.

有人可以向我解释一下吗?

javascript arrays

6
推荐指数
1
解决办法
1023
查看次数

标签 统计

javascript ×4

arrays ×3

constructor ×1