在学习或者面试的时候,经常会遇到关于数组的操作.尤其是关于排序, 过滤, 等相关条件的作业时, 很容易难倒一大批初学者. 本人将学习过程中的心得记录下来, 同小伙伴们一起分享, 如有错误,欢迎指正!
这是一个按顺序排列的数组
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
创建一个包裹函数
function randSort ( ) {
}
将数组传入并进行for循环
function randSort1(arr) {
for (let i = 0; i < arr.length; i++) {}
}
使用Math.random()方法 得到 一个随机数
function randSort1(arr) {
for (let i = 0; i < arr.length; i++) {
// 使用这个方法得到一位 0-1 之间的随机数 * arr的长度 得到10以内的随机数 再取整 并赋值给 rand
var rand = parseInt(Math.random() * arr.length)
创建一个用于交换值的变量
// 创建一个容器,用来交换数组的随机数和对应索引值
var temp = arr[rand]
进行值的交换
// 将数组对应值 赋值给随机的索引值
arr[rand] = arr[i]
// 将之前保存的随机数的值 赋值给对应索引值 也就是说, 现在数组里保存的对应索引值是根据每一次循环得到的随机数取得的对应索引值
arr[i] = temp
最后调用并打印
console.log(randSort1(arr));
结果是这样:
由此 我们使用交换变量法和随机数方法成功实现了数组的随机排序
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function randSort1(arr) {
for (let i = 0; i < arr.length; i++) {
// 使用这个方法得到一位 0-1 之间的随机数 * arr的长度 得到10以内的随机数 再取整 并赋值给 rand
var rand = parseInt(Math.random() * arr.length)
// 创建一个容器,用来交换数组的随机数和对应索引值
var temp = arr[rand]
// 将数组对应值 赋值给随机的索引值
arr[rand] = arr[i]
// 将之前保存的随机数的值 赋值给对应索引值 也就是说, 现在数组里保存的对应索引值是根据每一次循环得到的随机数取得的对应索引值
arr[i] = temp
}
return arr;
}
// 调用并打印
console.log(randSort1(arr));
第一次写, 如有不好的地方,欢迎指正!