gpt4 book ai didi

JavaScript "new Array(n)"和 "Array.prototype.map"怪异

转载 作者:IT老高 更新时间:2023-10-28 13:15:27 25 4
gpt4 key购买 nike

我在 Firefox-3.5.7/Firebug-1.5.3 和 Firefox-3.6.16/Firebug-1.6.2 中观察到了这一点

当我启动 Firebug 时:

var x = new Array(3)
console.log(x)
// [undefined, undefined, undefined]

var y = [undefined, undefined, undefined]
console.log(y)
// [undefined, undefined, undefined]

console.log( x.constructor == y.constructor) // true

console.log(
x.map(function() { return 0; })
)
// [undefined, undefined, undefined]

console.log(
y.map(function() { return 0; })
)
// [0, 0, 0]

这里发生了什么?这是一个错误,还是我误解了如何使用 new Array(3)

最佳答案

我有一个任务,我只知道数组的长度,需要转换项目。我想做这样的事情:

let arr = new Array(10).map((val,idx) => idx);

要像这样快速创建一个数组:

[0,1,2,3,4,5,6,7,8,9]

但它不起作用,因为:(请参阅 Jonathan Lonowski 的回答下面的几个答案)

解决方案可以是使用 Array.prototype.fill() 用任何值(即使未定义)填充数组项。

let arr = new Array(10).fill(undefined).map((val,idx) => idx);

console.log(new Array(10).fill(undefined).map((val, idx) => idx));

更新

另一种解决方案可能是:

let arr = Array.apply(null, Array(10)).map((val, idx) => idx);

console.log(Array.apply(null, Array(10)).map((val, idx) => idx));

关于JavaScript "new Array(n)"和 "Array.prototype.map"怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501581/

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