程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JS:如何从数组中选择随机的项目对大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决JS:如何从数组中选择随机的项目对?

开发过程中遇到JS:如何从数组中选择随机的项目对的问题如何解决?下面主要结合日常开发的经验,给出你关于JS:如何从数组中选择随机的项目对的解决方法建议,希望对你解决JS:如何从数组中选择随机的项目对有所启发或帮助;

我有一个 PAirsarray 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,请注明来意。
标签: