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))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值