JS中对数组操作的总结


var list = [1, 2, 3, 4, 5];
var list1 = [1, 2, 3];
var list2 = [4, 5];
console.log(list.length) // 3
list1.concat(list2) // [1, 2, 3, 4, 5] 连接两个或更多的数组,并返回结果。
list.every(i=>i>3) // false 检测数值元素的每个元素是否都符合条件。
list.some(i=>i>3) // true 检测数值元素是否有符合条件的值
list.filter(i=>i>3)    // [4, 5] 检测数值元素,并返回符合条件所有元素的数组。
list.find(i=>i=3) // 1 返回符合传入测试(函数)条件的数组元素。
list.forEach() // 遍历数组
list.join('') // 12345 把数组的所有元素放入一个字符串。
list.map(i=>i+1) // [2, 3, 4, 5, 6] 通过指定函数处理数组的每个元素,并返回处理后的数组。
list.pop() // 5 删除数组的最后一个元素并返回删除的元素。
list.push(8) // 5 向数组的末尾添加一个或更多元素,并返回新的长度。
list.shift() // 1 删除并返回数组的第一个元素。
list.sort() // 排序
list.toString() // 1,2,3,4,5 把数组转换为字符串,并返回结果。
list.unshift(8) // [8, 1, 2, 3, 4, 5, 6] 向数组的开头添加一个或更多元素,并返回新的长度。
list.reduce((curr, next) => curr + next); // 15 数组相加的总和

### JavaScript 随机打乱数组排序的实现方法 在 JavaScript 中,可以通过多种方式来实现数组的随机排序。以下是几种常见的方法及其具体实现: #### 方法一:使用 `sort` 和随机比较函数 此方法基于数组`sort` 函数,通过传递一个随机化的比较器函数,使数组元素按随机顺序排列。 ```javascript function shuffleArraySort(array) { return array.sort(() => Math.random() - 0.5); } let testArray1 = [1, 2, 3, 4, 5]; console.log(shuffleArraySort(testArray1)); ``` 该方法简单易懂,但在某些情况下可能无法保证完全均匀分布的结果[^1]。 --- #### 方法二:Fisher-Yates 洗牌算法 这是一种经典的洗牌算法,能够确保每个元素出现在任意位置的概率均等。其实现如下: ```javascript function fisherYatesShuffle(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } return array; } let testArray2 = [1, 2, 3, 4, 5]; console.log(fisherYatesShuffle(testArray2)); ``` Fisher-Yates 算法的时间复杂度为 O(n),效率较高,并且能提供更公平的随机化效果。 --- #### 方法三:简化版随机排序 另一种简单的实现方式是直接调用 `sort` 并返回固定范围内的随机数作为比较依据。 ```javascript var arr = [4, 1, 67, 12, 45, 121, 3]; arr.sort(function () { return 0.5 - Math.random(); }); console.log(arr); ``` 尽管这段代码简洁明了,但它同样存在一定的偏差风险,因此仅适用于对随机性要求较低的场景[^3]。 --- #### 方法四:手动交换元素位置 如果希望更加灵活地控制随机过程,则可以采用逐一遍历的方式逐一调整各元素的位置。 ```javascript function customShuffle(array) { let n = array.length; while (n) { const randIndex = Math.floor(Math.random() * n--); [array[n], array[randIndex]] = [array[randIndex], array[n]]; } return array; } let testArray3 = ['a', 'b', 'c', 'd']; console.log(customShuffle(testArray3)); ``` 这种方式本质上也是 Fisher-Yates 的变体之一,但提供了额外的操作空间以便于扩展其他逻辑需求[^4]。 --- ### 总结 以上四种方法均可用于完成 JavaScript 数组的随机重排任务。其中推荐优先选用 **Fisher-Yates 洗牌算法** ,因为它不仅具备较高的性能表现,还能有效规避因内置排序机制引发的各种潜在问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值