JavaScript如何按对象description字段升序排序对象数组
JavaScript对象数组按指定字段排序实现
直接调用sort()无效的原因
原生Array.sort()默认将数组元素转为字符串后,按字符Unicode编码值排序。数组元素为对象时,默认转字符串结果均为[object Object],所有元素对比结果等价,无法按对象内字段排序。
正确实现方案
sort()支持传入自定义比较函数,指定两个元素的对比规则即可实现按description字段升序排序,代码如下:
// 排序完成后再返回结果 return result.data.sort((prev, next) => { return prev.description.localeCompare(next.description); });
字符串的
localeCompare()方法会按照本地语言规则对比字符串顺序,适配多语言场景。如果仅需处理纯英文字符串排序,也可以用三元表达式实现相同逻辑:prev.description > next.description ? 1 : prev.description < next.description ? -1 : 0
排序后效果
执行代码后数组将按description字段升序排列,顺序为:
- description值为
Alfa(id:1、code:AAA)的对象 - description值为
Beta(id:2、code:BBB)的对象 - description值为
Gama(id:3、code:GGG)的对象
内容的提问来源于stack exchange,提问作者JustQuest
相关产品推荐
相关产品推荐

