前言:
需求是做搜索视频推荐音乐,每次只展示出三个,当空搜的时候展示的是前100个的随机的三个。所以我想了半天,最后想到的方法是通过索引,从1-100中随机选出3个数字组成一个数组
这样就能拿到想要的三个0-100的随机数组成的数组:
const musicArr = randomUniqueArr(3, 0, 100);
下边是公共函数的实现
/**
* 生成一个不重复的随机数组
*
* @param {number} len 数组长度
* @param {number} min 最小随机数
* @param {number} max 最大随机数
* @return {array} 不重复的随机数组
*/
const randomUniqueArr = (len, min, max) => {
if (max - min < len) {
// 可生成数的范围小于数组长度
return null;
}
const hash = [];
while (hash.length < len) {
const num = Math.floor(Math.random() * 100);
if (hash.indexOf(num) === -1) {
hash.push(num);
}
}
return hash;
};
总结:
我们只要动脑,任何需求能想想到解决它的办法,加油!!!