JS对象数组排序array[object]

遇到一个问题,把一个对象数组根据对象的name数据进行排序。

比如数据:

[
{id:'aaa',name:'aaaa'},
{id:'ccc',name:'cccc'},
{id:'44',name:'EEE'},
{id:'1',name:'BbB'}
]

需要根据a-Z进行排序(不区分大小写)

原理

array提供了一个sort方法进行排序,接收两个参数,两个参数进行对比即可:

[11,55,33,77,22].sort((a,b) => a-b);

分析

我们这里有两个问题:

  1. 数组内容为object
  2. object排序内容为string

所以,我们需要拆分开来进行解决:

data.sort((item1, item2) => item1.name[0].toUpperCase().charCodeAt() - item2.name[0].toUpperCase().charCodeAt());

解释:
使用object的name数据的第一个字符,进行toUpperCase()转换成大写后,再使用charCodeAt()方法计算出字符的整数值,然后进行对比即可。

你可能感兴趣的:(JS对象数组排序array[object])