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
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.