# 前言

对数组中的对象元素,指定其中一个属性,进行排序。

# 代码实现

function compare(arr , prop , isReverse) {
   if(Array.isArray(arr)) return arr.sort((a,b)=>
   {
       a = typeof a[prop] == 'string' ? a[prop][0].charCodeAt() : a[prop]
       b = typeof b[prop] == 'string' ? b[prop][0].charCodeAt() : b[prop]
       return (isReverse ? -1 : 1) * (a - b)
   }
   )
 }

# 测试结果

 const dataSource = [
   {
      age: Math.floor(Math.random()*20),
      name: "Abb"
   },
   {
      age: Math.floor(Math.random()*20),
      name: "Cbb"
   },
   {
      age: Math.floor(Math.random()*20),
      name: "Hbb"
   },
   {
      age: Math.floor(Math.random()*20),
      name: "Ebb"
   },
   {
      age: Math.floor(Math.random()*20),
      name: "Dbb"
   },
   {
      age: Math.floor(Math.random()*20),
      name: "Ibb"
   },
]

//  compare(dataSource, 'age')
// [ { age: 0, name: 'Dbb' },
//   { age: 0, name: 'Ibb' },
//   { age: 3, name: 'Cbb' },
//   { age: 7, name: 'Abb' },
//   { age: 18, name: 'Ebb' },
//   { age: 19, name: 'Hbb' } ]

// compare(dataSource, 'name')
// [ { age: 4, name: 'Abb' },
//   { age: 9, name: 'Cbb' },
//   { age: 10, name: 'Dbb' },
//   { age: 8, name: 'Ebb' },
//   { age: 14, name: 'Hbb' },
//   { age: 2, name: 'Ibb' } ]