如何使用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
相关产品推荐
相关产品推荐

