You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Lodash的_sortBy方法按Description字段排序对象数组?

问题

现有如下对象数组:

myArray = [ 
  {AType: "aaa", Description: "De"}, 
  {AType: "bbb", Description: "Hi"}, 
  {AType: "ccc", Description: "Un"}, 
  {AType: "ddd", Description: "Hw"} 
];

该数组当前按AType字段排序,我希望将其按Description字段排序。尝试使用Lodash的sortBy方法:

import _sortBy from 'lodash/sortBy'; 
mySortedArray = _sortBy(myArray, s => s.Description);

但结果不符合预期,返回格式为[Array(4), Array(3), {}, {}]。请问如何实现按该字段排序且不修改数组内其他内容?

解决方案

我来帮你排查下这个问题~你遇到的返回格式异常大概率是导入或用法上的小问题,咱们一步步解决:

正确的实现方式

首先,确保你用对了sortBy的导入和调用方式,以下两种写法都能实现需求,且完全保留原数组的对象结构、不会修改原数组内容:

方式1:单独导入sortBy

// 注意导入的命名,无需加下划线前缀(避免混淆)
import sortBy from 'lodash/sortBy';

const myArray = [ 
  {AType: "aaa", Description: "De"}, 
  {AType: "bbb", Description: "Hi"}, 
  {AType: "ccc", Description: "Un"}, 
  {AType: "ddd", Description: "Hw"} 
];

// 传入原数组和排序字段的回调(或直接传字段名)
const mySortedArray = sortBy(myArray, item => item.Description);

方式2:导入完整Lodash库

如果你习惯用完整的Lodash工具库,也可以简化写法,直接传入字段名字符串:

import _ from 'lodash';

const mySortedArray = _.sortBy(myArray, 'Description');

执行后,mySortedArray会得到按Description字典序排序的结果:

[
  {AType: "aaa", Description: "De"},
  {AType: "ddd", Description: "Hw"},
  {AType: "bbb", Description: "Hi"},
  {AType: "ccc", Description: "Un"}
]

而且原数组myArray的内容和顺序完全不会被修改。

异常原因排查

你返回的[Array(4), Array(3), {}, {}]格式很反常,大概率是以下原因:

  • 导入错误:不小心导入了Lodash的其他方法(比如groupBy),而非sortBy;
  • 版本兼容性:使用了过旧的Lodash版本,存在方法签名的差异;
  • 变量名冲突:你的代码中_sortBy变量被其他逻辑覆盖,导致调用了错误的方法。

建议先检查导入语句,确保确实导入的是lodash/sortBy,同时可以尝试更新Lodash到最新稳定版来避免版本问题。

内容的提问来源于stack exchange,提问作者Leo Messi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:25:46