要使用 Lodash 对对象数组按照某个对象属性值的长度进行排序,可以使用 _.sortBy()
方法,并在迭代函数中返回该属性值的长度。以下是具体实现:
const _ = require('lodash');
// 示例对象数组
const items = [
{ id: 1, name: 'apple' }, // name属性长度: 5
{ id: 2, name: 'banana' }, // name属性长度: 6
{ id: 3, name: 'cat' }, // name属性长度: 3
{ id: 4, name: 'dog' }, // name属性长度: 3
{ id: 5, name: 'elephant' } // name属性长度: 8
];
// 1. 按属性值长度升序排序(短的在前)
const sortedByAsc = _.sortBy(items, item => item.name.length);
console.log('按长度升序排序:');
console.log(sortedByAsc);
// 2. 按属性值长度降序排序(长的在前)
const sortedByDesc = _.sortBy(items, item => -item.name.length);
console.log('\n按长度降序排序:');
console.log(sortedByDesc);
代码说明:
- 核心方法:使用
_.sortBy()
进行排序,第一个参数是要排序的数组,第二个参数是迭代函数。 - 升序排序:迭代函数
item => item.name.length
返回属性值的长度,_.sortBy()
会按长度从小到大排序。 - 降序排序:在长度前加负号
item => -item.name.length
,实现从大到小排序。
输出结果:
按长度升序排序:
[
{ id: 3, name: 'cat' },
{ id: 4, name: 'dog' },
{ id: 1, name: 'apple' },
{ id: 2, name: 'banana' },
{ id: 5, name: 'elephant' }
]
按长度降序排序:
[
{ id: 5, name: 'elephant' },
{ id: 2, name: 'banana' },
{ id: 1, name: 'apple' },
{ id: 3, name: 'cat' },
{ id: 4, name: 'dog' }
]
这种方法适用于任何字符串属性的长度排序,只需将代码中的 name
替换为实际需要排序的属性名即可。