gpt4 book ai didi

javascript - 为什么我不能使用 _.map(new Array(n), Math.random) 创建一个随机数组?

转载 作者:搜寻专家 更新时间:2023-11-01 05:23:15 24 4
gpt4 key购买 nike

我想制作一个介于 0 和 1 之间的随机数数组,所以我尝试了:

var randList = _.map(new Array(5), Math.random);

但是我得到的不是预期的随机元素列表,而是:

console.log(JSON.stringify(randList));
"[null,null,null,null,null]"

为什么我得到的是空数组而不是随机数?

最佳答案

实际上,您得到一个 undefined 的数组- 函数传入 map甚至一次都没有被解雇。发生这种情况是因为使用 new Array(Number) 创建的数组构造函数有点奇怪 - 即使它的长度设置正确,它实际上并没有 0 , 1等属性:

var arr = Array(5);
console.log(arr.length); // 5
console.log('0' in arr); // false

这就是为什么,尽管很老 for (var i = 0; i < arr.length; i++)将用于迭代此数组,for (var i in arr)不会工作:

for (var i in arr) {
console.log(i); // won't be called even once!
}

我想这与 Array.map(映射 _.map 的地方)所发生的情况或多或少相似:

var newarr = arr.map(function(el) {
console.log(el); // nope, still nothing
});
console.log(newarr); // [undefined x 5]

那么创建这样一个数组的正确方法是什么?在这里:

var rightArr = Array.apply(0, Array(5)); // ah, the pure magic of apply!
// and here goes an array of randoms:
var randArr = rightArr.map(Math.random);

... 但当然使用 _.times在这种情况下是要走的路。 )

关于javascript - 为什么我不能使用 _.map(new Array(n), Math.random) 创建一个随机数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738287/

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