如何从Javascript中的多个数组中获取随机集?

问题描述 投票:0回答:4
        var name = ['C1', 'C2', 'C3'][Math.floor(Math.random() * 3)]
        var bgimg = ['C1bg.jpeg', 'C2bg.jpeg', 'C3bg.jpeg'][Math.floor(Math.random() * 3)]
        var profile_image_url = ['C1logo.png', 'C2logo.png', 'C3logo.png'][Math.floor(Math.random() * 3)]
        var description = ['C1 desc', 'C2 desc', 'C3 desc'][Math.floor(Math.random() * 3)]

请注意坏的例子。你如何使变量与其他各自的变量一起随机变换,因此C1名称将带有C1标识和desc,而不是每个部分都是随机的?

找到How to get n no elements randomly from an arrayGetting a random value from a JavaScript array,但是找不到如何做一组变量?

javascript arrays
4个回答
1
投票
var bgimgs = ['C1bg.jpeg', 'C2bg.jpeg', 'C3bg.jpeg'];
var names =  ['C1', 'C2', 'C3'];
var profile_image_urls = ['C1logo.png', 'C2logo.png', 'C3logo.png'];
var descriptions = ['C1 desc', 'C2 desc', 'C3 desc'];
var rand = Math.floor(Math.random()*bgimg.length);
var bgimg = bgimgs[random];
var name = bgimgs[random];
var profile_image_url = profile_image_urls[random];
var description = descriptions[random];

1
投票

干得好。

可以根据需要使用任意数量的数组并从提供的数组中返回新数组作为随机数组项集的函数。

const name = ['C1', 'C2', 'C3'];
const bgimg = ['C1bg.jpeg', 'C2bg.jpeg', 'C3bg.jpeg'];
const profile_image_url = ['C1logo.png', 'C2logo.png', 'C3logo.png'];
const description = ['C1 desc', 'C2 desc', 'C3 desc'];


const getRandomSet = (...set) => {
  let randomSet = [];
  [...set].forEach( set => {
    const randomIndex = Math.floor(Math.random() * set.length);
    randomSet.push(set[randomIndex]);
  });
  
  return randomSet;
}

const radnomSetFromArray = getRandomSet(name, bgimg, profile_image_url, description); 

console.log(radnomSetFromArray);

0
投票

试试这个 -

var arrIndex = Math.floor(Math.random() * 3)

然后用这个随机索引访问变量集,如 -

name[arrIndex],bgimg[arrIndex],profile_img_url[arrIndex],description[arrIndex]

0
投票

更好的方法是使用对象数组?

var objs = [
    {name: 'Obj 1', img: 'Obj image 1'},
    {name: 'Obj 2', img: 'Obj image 2'},
    {name: 'Obj 3', img: 'Obj image 3'}
];

var sortObj = objs[Math.floor(Math.random()*objs.length)];
© www.soinside.com 2019 - 2024. All rights reserved.