JS随机打乱数组的方法小结
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
本文实例总结了JS随机打乱数组的方法。分享给大家供大家参考,具体如下: JS中,要打乱数组有很多方法,网上流传一个国外人写的方法,我认为是最精简的了: function randomsort(a, b) { return Math.random()>.5 ? -1 : 1; //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1 } var arr = [1, 2, 3, 4, 5]; arr.sort(randomsort); 这里介绍下sort()函数,在JS中Array对象里内置了一个函数: arrayobj.sort([sortfun 在JavaScript中,数组的打乱通常用于生成随机序列,这对于模拟随机事件、游戏逻辑或测试用例等场景非常有用。本文将重点介绍几种常见的JS数组打乱方法,以供参考。 我们来看一个简洁的打乱数组的方法,它利用了数组的`sort()`函数。`sort()`函数默认按字母顺序排列元素,但可以接受一个比较函数作为参数,自定义排序规则。下面是一个由国外开发者提出的简单方法: ```javascript function randomsort(a, b) { return Math.random() > 0.5 ? -1 : 1; } var arr = [1, 2, 3, 4, 5]; arr.sort(randomsort); ``` 这个`randomsort()`函数通过生成0到1之间的随机数与0.5比较,返回-1或1,使得`sort()`函数在比较元素时有50%的概率交换它们的位置,从而达到打乱数组的效果。 接下来,我们可以对`randomsort()`函数进行扩展,以支持升序和降序排列: - **升序排列**: ```javascript function asc(a, b) { return a < b ? -1 : 1; } ``` - **降序排列**: ```javascript function desc(a, b) { return a > b ? -1 : 1; } ``` 此外,`sort()`函数还可以直接接收一个匿名函数,根据实际需求实现特定的排序逻辑。例如,以下代码将数组中的奇数排在前,偶数排在后: ```javascript var arrA = [6, 2, 4, 3, 5, 1]; arrA.sort(function(x, y) { if (x % 2 == 0) return 1; if (x % 2 != 0) return -1; }); ``` 这里,如果元素是偶数(x % 2 == 0),返回1使它们位置靠后;反之,如果元素是奇数,则返回-1使它们位置靠前。 除了`sort()`函数,还有其他方法可以打乱数组。例如,Fisher-Yates(也称为Knuth)洗牌算法是一种广泛应用的算法,它保证了每个排列具有相等的概率。下面是该算法的一个实现: ```javascript function shuffleArray(arr) { var len = arr.length, i; for (i = len - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } return arr; } ``` 这个算法通过遍历数组,每次随机选取一个索引与当前索引交换元素,最终达到打乱数组的目的。 了解这些方法后,我们可以根据具体场景选择合适的数组打乱方式。无论是使用`sort()`函数还是Fisher-Yates算法,都可以帮助我们轻松地生成随机化的数组序列。在编写JavaScript代码时,掌握这些技巧能提高代码的灵活性和可读性。
- 粉丝: 2
- 资源: 913
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助