js数组排序、乱序总结

arr.sort()
默认升序,可接受两个参数,返回值为正数则交换位置

// 升序,返回值为-1
arr.sort((a,b) => {
       return a-b
 })
// 降序,返回值为1
 arr.sort((a,b) => {
     return b-a
 })
// 对象中根据属性值排序
var arr = [
    {name:'zopp',age:0},
    {name:'gpp',age:18},
    {name:'yjj',age:8}
]
function compare(property) {
    return (a, b) => {
        var value1 = a[property]
        var value2 = b[property]
        return value1 - value2
    }
}
console.log(arr.sort(compare('age')))

数组乱序

var arr = [1,2,3,4,5,6,7,8,9]

 arr.sort((a,b) => {
     return Math.random() - 0.5
 })
 console.log(arr)
//  forEach遍历,随机生成下标,交换位置
function disorderArr(arr) {  
     arr.forEach((e, i, a) => {
         let randomIndex = Math.round(Math.random()*i)
         let temp = a[randomIndex]
         a[randomIndex] = a[i]
         a[i] = temp
     })
     return arr
 }
 console.log(disorderArr(arr))
// 洗牌原理:从数组的最后位置开始,从前面随机一个位置,对两个数进行交换,直到循环完毕
 function shuffleSort(arr) {
     let i = arr.length - 1
     while(i>0) {
         let rIndex = Math.floor(Math.random()*i)
         let temp = arr[rIndex]
         arr[rIndex] = arr[i]
         arr[i] = temp
         i--
     }
     return arr
 }
 console.log(shuffleSort(arr1))

你可能感兴趣的:(javascript)