代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>对象数组的排序</title>
</head>
<body>
<button type="button" onclick="a()">根据年龄升序</button>
<button type="button" onclick="b()">根据年龄降序</button>
<button type="button" onclick="c()">根据id升序</button>
<button type="button" onclick="d()">根据id降序</button>
<button type="button" onclick="e()">根据id升序,如果id相等根据年龄升序</button>
</body>
<script>
function a(){
let a = [{id:15,age:'18'},{id:8,age:'9'},{id:9,age:'24'},{id:7,age:'11'},{id:7,age:'10'},{id:7,age:'101'}]
a.sort((a,b)=>{return a.age-b.age})
console.log(a)
}//根据年龄升序
function b(){
let a = [{id:15,age:'18'},{id:8,age:'9'},{id:9,age:'24'},{id:7,age:'11'},{id:7,age:'10'},{id:7,age:'101'}]
a.sort((a,b)=>{return b.age-a.age})
console.log(a)
}//根据年龄降序
function c(){
let a = [{id:15,age:'18'},{id:8,age:'9'},{id:9,age:'24'},{id:7,age:'11'},{id:7,age:'10'},{id:7,age:'101'}]
a.sort((a,b)=>{return a.id-b.id})
console.log(a)
}//根据id升序
function d(){
let a = [{id:15,age:'18'},{id:8,age:'9'},{id:9,age:'24'},{id:7,age:'11'},{id:7,age:'10'},{id:7,age:'101'}]
a.sort((a,b)=>{return b.id-a.id})
console.log(a)
}//根据id降序
function e(){
let a = [{id:15,age:'18'},{id:8,age:'9'},{id:9,age:'24'},{id:7,age:'11'},{id:7,age:'10'},{id:7,age:'101'}]
a.sort((a,b)=>{
if(a.id==b.id){return a.age-b.age}
return a.id-b.id
})
console.log(a)
}//根据id升序,如果id相等根据年龄升序
</script>
</html>
打印结果如图:
总结:sort()进行排序的时候,如果不穿参数的话将不会按照数值大小排序,按照字符编码的顺序进行排序;如果传了参数的话(参数是一个函数),可以根据函数的返回结果进行升序和降序。