对象数组排序
一、普通数组排序
直接使用自带的 sort() 排序
例子:
let arr = [3,2,66,4,77,23]
arr.sort()
console.log(arr)
二、对象数组排序
同样也还是可以使用 js 自带的 sort(),但是需要传参
先解释一下 sort() 函数:
语法:arrayObject.dort(sortFunc)
sortFunc: 可选,规定排序顺序。必须是函数。
- 如果调用 sort() 时没有传参,将按照字母顺序对数组中的元素进行排序,准确点就是按照字符编码进行排序。(如想尝试,可以通过将数组所有元素都转换为字符串,进行比较)
- 如果想按照其他标准进行排序,就需要提供比较函数,该函数比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数的两个参数 x、y, 函数返回值如下:
·若 x <y,在排序后的数组中 x 应该出现在 y 之前,则返回一个小于 0 的值
·若 x =y,则返回 0
·若 x >y,则返回一个大于 0 的值
如:
function sortId(x, y) {return x.id-y.id}
例子:
let arr = [{id:233,name:'探路者'},
{id:6,name:'班加罗尔'},
{id:66,name:'直布罗陀'},
{id:23,name:'命脉'},
{id:1,name:'恶灵'},
{id:888,name:'猎犬'},
{id:33,name:'幻像'},
{id:234,name:'侵蚀'},
{id:43,name:'亡灵'},
{id:999,name:'罗芭'},
{id:777,name:'动力小子'}
]
function sortId(x, y) {return x.id-y.id}
arr.sort(sortId)
追加
追加输入随意属性名排序:
function sortProp(prop) {return function(x, y) {let value1 = x[prop]
let value2 = y[prop]
return value1-value2
}
}
由于做项目经常用到,记录一下防止脑袋秀逗
以上