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))