数组乱序、随机排序、洗牌的方法
                                                        
                                
                                5682次阅读
                            
                            
                                
                                344人点赞
                            
                            
                            
                                
                                发布时间: 2021-12-17 15:56:20
                            
                        
                        
                            
                                
                                扫码到手机查看
                                
                                    ![]() 
                                
                            
                        
                    // 工具函数集-避免修改原始值
// 洗牌函数 source 是一个数组
export function shuffle(source) {
  // 先复制一份避免直接修改source
  const arr = source.slice()
  for (let i = 0; i < arr.length; i++) {
    const j = getRandomInt(i)
    // 交换arr[i]和j的值 交换后会修改arr数组
    swap(arr, i, j)
  }
  return arr
}
// 取0-max之间的值也会包含max
function getRandomInt(max) {
  // Math.random() 0-1之间值 但不包含1
  return Math.floor(Math.random() * (max + 1))
}
// 交换arr[i]和arr[j]的值
// 这个会修改arr数组
function swap(arr, i, j) {
  const t = arr[i]
  arr[i] = arr[j]
  arr[j] = t
}当创建这种工具函数的时候,一定要避免直接修改原始数组这种操作,有可能会造成误操作。
所以要在处理前先复制一下。
 
                     
                     
                     
                     
                     
                     
                     
             
             
             目录
        目录