马黑PHP整站系统

1234567
891011121314
15161718192021
22232425262728
2930     

[复位日记]

最新评论

飞飞
小希
小希
飞飞
飞飞

网站统计

·今日访问 : 18
·页面点击 : 18
·当前在线 : 3

2024年9月3日 星期二[阅读 60]

从数组中批量获取不重复的数组内容

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 版,从一系列曲库中抽取部分曲目在前台播放。函数不操作也不影响新添加的本地音乐。

2024': 前一则  下一则    

发表评论:

       

Copyright © 2023 All Right Reserved 马黑PHP文章管理整站系统v1.8
联系我们: gxblk@163.com