指定された長さの配列を作成するために この答え をフォローアップして、対応する結果を取得するために以下を実行しましたが、ゼロではなく乱数で埋められました。
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]
ワンライナーで正しい結果が得られるかな?.
var randoms = [...Array(4)].map(() => Math.floor(Math.random() * 9));
document.body.innerText = randoms;
_Array#fill
_ は何をしますか?
MDNによると
fill()
メソッドは、開始インデックスから終了インデックスまでの配列の要素に静的な値を入力しますall。
_Function#apply
_ 、 _Array#map
_ 、 Math.floor()
、 Math.random()
。
ES6では、 _Array#from
_ および 矢印関数 を使用できます。
_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)
を使用できますか?
上記のコードはどちらも、6つの要素の新しい配列を作成します。各要素の値は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のブログ
var randoms = Array(4).fill(Math.floor(Math.random() * 9));
このコード行は、fill
が単一の値を取り、リストの長さにわたって繰り返すため、同じ数の4のリストを作成します。あなたがしたいことは毎回乱数ジェネレータを実行することです:
var makeARandomNumber = function(){
return Math.floor(Math.random() * 9);
}
var randoms = Array(5).fill(0).map(makeARandomNumber);
console.log(randoms)
// => [4, 4, 3, 2, 6]
短くてシンプルなES6アプローチ-
// randomly generated n = 4 length array 0 <= array[n] <= 9
var randoms = Array.from({length: 4}, () => Math.floor(Math.random() * 10));
楽しい!
`const t = Array.from({length:n}、mapArrowFx);
1)const t10 = Array.from({length: 10}, (v, k) => k); [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2)const tEven = Array.from({length: 10}, (v, k) => 2*k); [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
........
3)
let n=100; const tRandom= Array.from({length: n}, (v, k) => Math.floor(Math.random()*n));
...
解決策 ランダムな一意の数値のサイズ配列
const uniqRandomNumbers = _.sampleSize(_.range(9), 4);
console.log(uniqRandomNumbers);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>