javascript - 在 JavaScript 中用随机数创建长度为 n 的数组

标签 javascript arrays random

跟进 this answer为了创建指定长度的数组,我执行了下面的操作以获得相应的结果,但填充了随机数,而不是零。

var randoms = Array(4).fill(Math.floor(Math.random() * 9));

好吧,从数学上讲它是随机的,好吧。但是我当然希望随机性在数组中可见,而不仅仅是在运行之间。愚蠢的电脑……别按我说的做。做我想做的!

我可以迭代并将其放入我的随机(和变化)值。但我想知道,出于纯粹的好奇心,是否有可能使用像上面那样的 MatLab 样式的单行代码来获得正确的结果。我需要调用 eval(function()...) 吗?我听说过很多关于 eval 的坏话...

请注意,上面生成的代码如下:

[7, 7, 7, 7]
[3, 3, 3, 3]

等而我想要类似的东西

[1, 2, 3, 4]
[4, 3, 8, 4]

最佳答案

什么是Array#fill做什么?

根据 MDN

The fill() method fills all the elements of an array from a start index to an end index with a static value.

您可以使用 Function#apply , Array#map , Math.floor() , Math.random() .

在 ES6 中,Array#fromArrow function可以使用。

Array.from({length: 6}, () => Math.floor(Math.random() * 9));

Array.apply(null, Array(6)).map(() => Math.floor(Math.random() * 9));

var randomArr = Array.from({length: 6}, () => Math.floor(Math.random() * 9));

document.getElementById('result').innerHTML = JSON.stringify(randomArr, 0, 4); // For demo only
<pre id="result"></pre>

在 ES5 中:

Array.apply(null, Array(6)).map(function(item, index){
    return Math.floor(Math.random() * 9);
});

var randomArr = Array.apply(null, Array(6)).map(function(item, index){
    return Math.floor(Math.random() * 9)
});

document.getElementById('result').innerHTML = JSON.stringify(randomArr, 0, 4);
<pre id="result"></pre>

什么是Array.apply(null, Array(n))?这里可以使用new Array(n)吗?

以上代码都创建了包含六个元素的新数组,每个元素的值为undefined。但是,当使用 new 语法时,创建的数组是不可迭代的。为了使数组可迭代,使用了 Array.apply(null, Array(6)) 语法。


如果你有lodash包含在页面上,这真的很容易。

_.times(6, _.random.bind(0, 100))
        ^                        - Number of elements in array
                         ^       - Random number range min
                            ^^^  - Random number range max

注意:这个答案的灵感来自Colin Toh's blog

关于javascript - 在 JavaScript 中用随机数创建长度为 n 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34966459/

相关文章:

javascript - 如何使用 javascript 为谷歌分析创建点击事件

javascript - 在 JavaScript 中执行计算后,如何获取嵌套数组中的所有对象?

javascript - HTML 表格转换为图像

android - 在 SQLite 中获取随机记录

javascript - 使用jquery选择没有第一列数据的表

javascript - 使用 XMLHttpRequest 发送图像并使用 php 抓取

c - 如何在C中将3个数组排序在一起

ios - 返回数组的快速函数

python "import random"错误

python - 在种子中生成随机数