0
点赞
收藏
分享

微信扫一扫

如何使用 Lodash 对对象数组按照某个对象属性值的长度进行排序?

要使用 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);

代码说明:

  1. 核心方法:使用 _.sortBy() 进行排序,第一个参数是要排序的数组,第二个参数是迭代函数。
  2. 升序排序:迭代函数 item => item.name.length 返回属性值的长度,_.sortBy() 会按长度从小到大排序。
  3. 降序排序:在长度前加负号 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 替换为实际需要排序的属性名即可。

举报

相关推荐

0 条评论