乐趣区

对象数组排序按照数组内对象的某一属性进行排序

对象数组排序

一、普通数组排序

直接使用自带的 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
    }
}

由于做项目经常用到,记录一下防止脑袋秀逗

以上

退出移动版