日 | 一 | 二 | 三 | 四 | 五 | 六 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
[复位日记]
网站统计
·今日访问 : 644
·页面点击 : 651
·当前在线 : 5
2024年9月3日 星期二[阅读 418]
从数组中批量获取不重复的数组内容
getRanData = (num, data) => {
let len = data.length;
if(len <= num) return data;
let ar = Array(len).fill(0).map((id,key) => id + key);
ar.sort(() => 0.5 - Math.random());
ar.length = num;
return ar.map(a => data[a]);
};
函数 getRanData() 共两个参数,num 是取出的元素数量,data 是数组。数组一维、二维或多维无关键要,都能取出。
代码简单说明:
若取出的数组元素数量小于等于要取出的总数,则直接返回data;不然的话,先使用数组元素数量创建一个临时数组ar,其元素为 0~data 长度的顺序数值,接着对之进行乱序排列,再截取 num 值的长度,最后遍历ar,以其元素值做下标获取到data数组的相应元素。
此函数三度易稿,前二稿中,第一稿用for循环,第二稿使用高阶函数,并无不妥,只是觉得代码不够简洁,所以有第三稿。函数用于 mplayer_simple 版,从一系列曲库中抽取部分曲目在前台播放。函数不操作也不影响新添加的本地音乐。
发表评论: