简体   繁体   中英

JS creating an array of 3 elements containing random number from 0 to 255 (included) in single line of code

I'm trying to create an array with 3 elements without using for loops, so the code will be a single line (or single statement). What I want to do is creating an array of 3 elements and each element should be random number from 0 to 255 (0 and 255 will be included).

let colors = new Array(3).map((v) => Math.floor(Math.random()*256));

But this code doesn't work, I guess it's because each element is undefined and.map array property can't map undefined elements. What's your suggestions?

Array.from() is something you are looking for:

 const res = Array.from({length: 3}, _ => Math.floor(Math.random()*256)) console.log(res)

You can try using Array.from() specifying the array-like objects (objects with a length property and indexed elements) of the array as first parameter and the arrow function to fill the array with random values in that range as the second parameter:

 let colors = Array.from({length: 3}, () => Math.floor(Math.random() * 256)); console.log(colors);

Without usage of Array.from

[0,0,0].map(() => Math.floor(Math.random() * 256))

One more ridiculous approach:) just for fun:

Math.floor(Math.random() * (Math.pow(2, 24) + 1)) // generate random number between zero and 2^24
    .toString(2) // convert it to binary representation string
    .padStart(24, '0') // ensure that length is 24
    .match(/.{1,8}/g) // split digits to three groups of length 8
    .map(i => parseInt(i, 2)) // parse it back from binary to decimal as separate numbers
  • 2^24 will have 24 digits in binary representation, so we'll be able to split it in 3 groups of 8 digits each.
  • padding is necessary to ensure amount of digits in a binary representation

Something less extensible but more straight-forward :

 let colors = [Math.floor(Math.random()*256),Math.floor(Math.random()*256),Math.floor(Math.random()*256)]; console.log(colors)

You can use Array.from({length: 3}, () => Math.floor(Math.random() * 256));

Just follow this, you'll be fine!

 const colors = Array.from({length: 5 }, () => Math.floor(Math.random()*256)) console.log(colors)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM