大佬教程收集整理的这篇文章主要介绍了JS:如何从数组中选择随机的项目对,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 PAirs 的 array 25 张图像(即总共 50 张图像),每个图像路径都在它自己的关联阵列中.
const cardArray = [
{ name:'A',img:'images/A.jpg' },{ name:'A',{ name:'B',img:'images/B.jpg' },{ name:'C',img:'images/C.jpg' },...
... (bla bla bla,up to 25 times)
]
我知道如果我正好有 8 对,那么我可以使用的函数是:
cardArray.sort(() => 0.5 - Math.random())
我想做的是随机选择 8 对这些图像,然后像在记忆匹配游戏中一样将它们打乱。如何使每次用户重新加载浏览器时,都会加载数组中不同的图像对,而不是每次都加载相同的 8 个图像?
谢谢。
要从卡片阵列中随机选择一张卡片,只需:
const randomCard = Math.floor(Math.random() * cardArray.length);
,
以下内容将从总共 25 种可能的选择中随机选择 8 对图像。然后以随机顺序呈现这 16 张图像。
function shuffle(a,n){ // shuffle array a in place (Fisher-Yates)
let m=a.length;
n=n||m-1;
for(let i=0,j;i<n;i++){
j=Math.floor(Math.random()*(m-i)+i);
if (j-i) [ a[i],a[j] ] = [ a[j],a[i] ]; // swap 2 array elements
}
}
const a=[...new Array(25)].map((v,i)=>i);
shuffle(a,8); // array of indices,like [ 2,13,7,5,24,19,8,... ]
let sel=a.slice(0,8).map(k=> // array of 8 image paths
"images/"+String.fromCharCode(k+65)+".jpg");
sel=sel.concat(sel); // double the array ...
shuffle(sel); // ... and shuffe it again
console.log(sel);
.as-console-wrapper {max-height: 100% !important}
该方法基于数组混洗算法 (Fisher-Yates),我仅将其应用于前 8 个元素。然后提取这些元素并以大写字符形式呈现。
我冒昧地将您的图像对象重新排列为图像名称数组。图像现在被选取两次 (sel.concat(sel)
) 并再次随机排列以随机显示它们。
以上是大佬教程为你收集整理的JS:如何从数组中选择随机的项目对全部内容,希望文章能够帮你解决JS:如何从数组中选择随机的项目对所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。