遇到一个问题,把一个对象数组根据对象的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);
分析
我们这里有两个问题:
- 数组内容为object
- object排序内容为string
所以,我们需要拆分开来进行解决:
data.sort((item1, item2) => item1.name[0].toUpperCase().charCodeAt() - item2.name[0].toUpperCase().charCodeAt());
解释:
使用object的name数据的第一个字符,进行toUpperCase()
转换成大写后,再使用charCodeAt()
方法计算出字符的整数值,然后进行对比即可。
网友评论