# 前言
对数组中的对象元素,指定其中一个属性,进行排序。
# 代码实现
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' } ]