首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >除了Lodash,还有哪些库可以实现对象数组按属性值长度排序?

除了Lodash,还有哪些库可以实现对象数组按属性值长度排序?

原创
作者头像
小焱写作
发布2025-08-31 08:16:31
发布2025-08-31 08:16:31
14600
代码可运行
举报
运行总次数:0
代码可运行

除了 Lodash,还有许多 JavaScript 库可以实现对象数组按属性值长度排序,这些库要么专注于数据处理,要么是功能更全面的工具库。以下是一些常用的选择:

1. Underscore.js

Underscore 是与 Lodash 类似的工具库,API 设计相似,也提供了排序方法:

代码语言:javascript
代码运行次数:0
运行
复制
const _ = require('underscore');

const items = [
  { id: 1, name: 'apple' },
  { id: 2, name: 'banana' },
  { id: 3, name: 'cat' }
];

// 按 name 长度升序排序
const sorted = _.sortBy(items, item => item.name.length);

2. Ramda

Ramda 是一个函数式编程库,强调纯函数和不可变性,排序方式更偏向函数式风格:

代码语言:javascript
代码运行次数:0
运行
复制
const R = require('ramda');

const items = [
  { id: 1, name: 'apple' },
  { id: 2, name: 'banana' },
  { id: 3, name: 'cat' }
];

// 按 name 长度升序排序
const sorted = R.sortBy(R.compose(R.length, R.prop('name')))(items);

// 按 name 长度降序排序(需配合 reverse)
const sortedDesc = R.reverse(R.sortBy(R.compose(R.length, R.prop('name')))(items));

3. Lodash-es(Lodash 的 ES 模块版本)

如果你在现代 ES 模块项目中使用,可以选择 Lodash 的 ES 模块版本,用法与 Lodash 一致但支持树摇:

代码语言:javascript
代码运行次数:0
运行
复制
import { sortBy } from 'lodash-es';

const items = [/* ... */];
const sorted = sortBy(items, item => item.name.length);

4. date-fns(附带数组工具)

虽然主要用于日期处理,但 date-fns 也包含一些数组工具函数,可结合原生方法使用:

代码语言:javascript
代码运行次数:0
运行
复制
import { sortBy } from 'date-fns';

const items = [/* ... */];
// 按 name 长度升序排序
const sorted = sortBy(items, (item) => item.name.length);

5. 原生 JavaScript(无需库)

实际上,无需任何库也能高效实现,原生 Array.sort() 性能甚至可能更优:

代码语言:javascript
代码运行次数:0
运行
复制
const items = [/* ... */];

// 升序(短 -> 长)
const sortedAsc = [...items].sort((a, b) => a.name.length - b.name.length);

// 降序(长 -> 短)
const sortedDesc = [...items].sort((a, b) => b.name.length - a.name.length);

各库对比与选择建议

特点

适用场景

Underscore.js

API 简单,与 Lodash 相似

项目已引入或需要轻量工具库

Ramda

函数式风格,适合函数式编程项目

强调纯函数、不可变性的场景

Lodash-es

支持 ES 模块,可树摇优化体积

现代前端项目(Webpack/Vite 等)

date-fns

主要处理日期,数组工具是附加功能

已使用 date-fns 处理日期的项目

原生 JavaScript

无依赖,性能优

追求轻量、无需额外库的场景

如果项目中已经引入了上述某个库,直接使用对应库的排序方法即可;如果是新项目且仅需排序功能,原生 Array.sort() 是最轻便高效的选择。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Underscore.js
  • 2. Ramda
  • 3. Lodash-es(Lodash 的 ES 模块版本)
  • 4. date-fns(附带数组工具)
  • 5. 原生 JavaScript(无需库)
  • 各库对比与选择建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档