当前位置: 首页 > wzjs >正文

帮别人做网站开票开什么税目刚做外贸最好用哪个网站

帮别人做网站开票开什么税目,刚做外贸最好用哪个网站,企业所得税优惠政策最新2023计算,固原门户网站建设大白话javascript实现一个函数,将数组中的元素随机打乱顺序 下面我会详细介绍几种用 JavaScript 实现随机打乱数组元素顺序的方法,同时加上代码注释。 方法一:Fisher-Yates 洗牌算法 这是一种经典的洗牌算法,其核心思想是从数组…

大白话javascript实现一个函数,将数组中的元素随机打乱顺序

下面我会详细介绍几种用 JavaScript 实现随机打乱数组元素顺序的方法,同时加上代码注释。

方法一:Fisher-Yates 洗牌算法

这是一种经典的洗牌算法,其核心思想是从数组的最后一个元素开始,依次向前遍历,对于每个位置,随机选择一个前面的位置(包括当前位置)的元素与之交换。

function shuffleArray1(array) {// 获取数组的长度let len = array.length;// 当数组还有多个元素未处理时while (len > 0) {// 生成一个 0 到 len - 1 之间的随机整数,作为要交换的位置let randomIndex = Math.floor(Math.random() * len);// 将 len - 1 位置的元素与随机位置的元素交换[array[len - 1], array[randomIndex]] = [array[randomIndex], array[len - 1]];// 处理下一个元素,数组长度减 1len--;}return array;
}// 测试数组
let testArray1 = [1, 2, 3, 4, 5];
console.log(shuffleArray1(testArray1));

方法二:使用 sort 方法和随机比较函数

这种方法利用了 JavaScript 数组的 sort 方法,通过传入一个随机的比较函数,让数组元素随机排序。

function shuffleArray2(array) {// 使用 sort 方法和随机比较函数return array.sort(() => Math.random() - 0.5);
}// 测试数组
let testArray2 = [1, 2, 3, 4, 5];
console.log(shuffleArray2(testArray2));

实现原理思路总结

  • Fisher-Yates 洗牌算法:它的优点是每个元素在每个位置出现的概率是相等的,是一种公平的洗牌算法。通过不断地随机交换元素,让数组元素的顺序变得随机。
  • 使用 sort 方法和随机比较函数:这种方法比较简单,但由于 sort 方法的实现原理,它并不是一种完全公平的洗牌算法,有些元素可能会有更高的概率出现在某些位置。不过在一些对随机性要求不是特别高的场景下,这种方法也可以使用。

除了Fisher-Yates 洗牌算法,还有哪些方法可以实现数组元素的随机打乱?

除了 Fisher - Yates 洗牌算法外,下面为你介绍另外几种实现数组元素随机打乱的方法,同时会给出代码示例并加上详细注释。

1. 随机选择元素法

这种方法的思路是,不断从原数组中随机选取元素,添加到新数组中,同时从原数组中移除该元素,直到原数组为空。

function shuffleArrayByRandomSelection(arr) {// 创建一个空数组用于存储打乱后的元素let shuffled = [];// 当原数组还有元素时,继续循环while (arr.length > 0) {// 生成一个 0 到原数组长度减 1 之间的随机索引let randomIndex = Math.floor(Math.random() * arr.length);// 从原数组中取出该随机索引对应的元素let randomElement = arr[randomIndex];// 将该元素添加到新数组中shuffled.push(randomElement);// 从原数组中移除该元素arr.splice(randomIndex, 1);}return shuffled;
}// 测试数组
let testArray1 = [1, 2, 3, 4, 5];
console.log(shuffleArrayByRandomSelection([...testArray1]));

2. 结合 Math.random() 和 splice() 优化版

此方法与上面的随机选择元素法类似,但在代码实现上更简洁一些。

function shuffleArrayOptimized(arr) {let newArr = [];// 复制原数组,避免修改原数组let tempArr = [...arr];while (tempArr.length > 0) {// 随机选择一个索引let index = Math.floor(Math.random() * tempArr.length);// 把该索引对应的元素添加到新数组newArr.push(tempArr[index]);// 从临时数组中移除该元素tempArr.splice(index, 1);}return newArr;
}// 测试数组
let testArray2 = [1, 2, 3, 4, 5];
console.log(shuffleArrayOptimized([...testArray2]));

实现原理思路总结

  • 随机选择元素法:通过不断从原数组中随机挑出元素放到新数组里,原数组中的元素就会被逐步打乱到新数组中。因为每次选择都是随机的,所以能实现打乱效果。不过由于频繁使用 splice 方法,当数组很大时,性能可能会受到影响。
  • 结合 Math.random() 和 splice() 优化版:核心思路和随机选择元素法一样,只不过将原数组复制了一份,避免修改原数组,代码结构上更加清晰明了,同样在处理大数组时性能方面会存在一定的问题。

这些方法虽然都能实现数组元素的随机打乱,但在性能和随机性的均匀性上可能会有所差异。在实际使用时,可根据具体的需求来选择合适的方法。

http://www.dtcms.com/wzjs/786009.html

相关文章:

  • 网站策划中规划预测怎们做韵达快递小网站怎么做
  • 电商的网站开发订单返利功能前端网站做中 英文怎么说
  • 网站的访问量怎么查厂家营销型网站建设
  • 打开官方网站seo外包方案
  • 网站建设有哪些费用郑州最新通告
  • 域名注册最好的网站建设购物网站流程
  • 专业网站是指什么鲜花销售管理系统
  • 2016个人网站备案网站开发建设挣钱吗
  • 做贸易把产品放到哪个网站好呢网站名是域名吗
  • 贵州做网站的北京优化社区防控措施方案
  • 中国建材网官方网站网页主要由三部分组成
  • 网站建设以及网页设计需要会什么查企业信息的软件
  • 建设安全工程信息网站网站自然排名这么做
  • 银川网站制作公司拓者设计吧注册码是永久的吗
  • 北京pk10盘制作网站建设网络服务器可提供的常见服务有什么
  • 就业创业网站建设seo优化服务是什么意思
  • 镇江网站建设推广公司莱芜网站建设方案公司
  • 大连科技网站制作软件工程主要课程
  • 4s店网站模板网络营销就业前景怎么样
  • 网站seo快速排名软件php网站开发推荐书籍
  • 网站开发用什么语言开发的上海注册公司查询
  • 网站地图xml文件长沙电商网站开发
  • 平台网站建设制作wordpress主题没有小工具
  • 深圳网站设计设计wordpress顶栏
  • 营销型网站的域名手机上做网站的软件
  • 本公司经营网站建设做网站的技术门槛高吗
  • 服务器 网站 app有没有可以直接看的
  • 河南中英网站建设广州专业的网站建设公司哪家好
  • 做网站还能赚钱装潢设计图
  • php做网站首页修改互利互通网站建设