在使用Lodash的orderBy
函数对集合进行排序时,如果想要实现不区分大小写的排序,我们可以通过提供一个自定义的迭代器函数来转换每个元素为统一的大小写(通常是转化为全小写或全大写),然后再进行排序。这样可以保证比较的一致性而不受原字符串大小写的影响。
下面是一个具体的例子,假设我们有一个用户对象的数组,并且我们想按照用户名(username
属性)进行不区分大小写的排序:
javascriptimport _ from 'lodash'; const users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'Barney', 'age': 34 } ]; // 使用orderBy进行排序,通过提供迭代器函数转换所有username为小写 const sortedUsers = _.orderBy(users, [(user) => user.user.toLowerCase()], ['asc']); console.log(sortedUsers);
在上面的代码中,orderBy
的第二个参数是一个包含迭代器函数的数组。这个迭代器函数user => user.user.toLowerCase()
将每个用户的user
属性(即用户名)转换为小写。这样,即使原始数据中的用户名大小写不一致,比较时也能保持一致性。
第三个参数 ['asc']
指定了排序的方式,这里是按升序排序。如果需要降序,可以将其换成 ['desc']
。
这样,最终打印的sortedUsers
数组将按照用户名不区分大小写的方式进行了排序。
2024年6月29日 12:07 回复