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

对Proxy包裹的对象数组排序时出现localeCompare is not a function报错如何解决

问题根因

localeCompare 是字符串原型链上的专属方法,你代码中用于比较的itemIndex字段是Number数值类型,本身不存在该方法,所以触发类型错误,和sort作用域、Proxy代理、Vue3环境均无关。

解决方案

你可以根据实际业务需求选择以下两种修复方案:

  • 方案1:先转字符串再调用localeCompare,适合需要遵循字符串排序规则的场景
    myData.sort((a, b) => String(a.itemIndex).localeCompare(String(b.itemIndex)))
    
  • 方案2:直接使用数值比较逻辑,更适配纯数字序号的排序场景,性能更优
    // 正序:从小到大排
    myData.sort((a, b) => a.itemIndex - b.itemIndex)
    // 倒序:从大到小排
    // myData.sort((a, b) => b.itemIndex - a.itemIndex)
    
可选优化

如果业务中存在itemIndex为空的异常情况,可以加可选链和默认值兜底,避免空值引发的额外报错:

myData.sort((a, b) => String(a.itemIndex ?? '').localeCompare(String(b.itemIndex ?? '')))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:36:02