You need to enable JavaScript to run this app. JavaScript按姓氏字母顺序排序账户数组不生效如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript按姓氏字母顺序排序账户数组不生效如何解决?

问题原因

你的代码存在两个核心错误:

  • 取值路径错误:last属性嵌套在name对象下,不能直接通过x.last/y.last获取,正确路径是x.name.last/y.name.last
  • 字符串比较方式错误:JS中字符串不能用减号-做排序比较,减号会尝试把字符串转成数字,最终得到NaN,导致排序失效,字符串按字母顺序排序需要使用localeCompare()方法

正确实现代码

function sortAccountsByLastName(accounts) {
  // 如果不需要保留原数组顺序可以省略拷贝逻辑,直接用accounts.sort
  return [...accounts].sort((x, y) => x.name.last.localeCompare(y.name.last))
}

补充说明

如果需要忽略大小写、特殊字符的差异实现更宽松的字母排序,可以给localeCompare添加配置参数:

x.name.last.localeCompare(y.name.last, undefined, { sensitivity: 'base' })

另外JS的Array.sort()是原地排序,会直接修改原数组,如果需要保留原数组的原始顺序,排序前先对数组做浅拷贝即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 10:48:02