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

JavaScript sort回调函数排序哈希对象无效,求问题排查

问题解决:JS数组对象排序失效的原因

你的代码问题出在Array.sort()的比较函数返回值上——JS的排序比较函数不能返回布尔值,得返回数字(负数、0、正数)。

你写的return a.class_id < b.class_id;会返回true或false,JS会把true转成1,false转成0,这完全不符合排序需要的逻辑,自然排不出正确结果。

修正后的代码

把比较函数改成返回两个值的差值就行:

function compareItem(a,b){
     return a.class_id - b.class_id;
}
var arr = [{class_id:2},{class_id:1},{class_id:3}];
console.log(arr.sort(compareItem));
console.log(arr);

这样就能得到升序排列的结果:[{class_id:1}, {class_id:2}, {class_id:3}]

额外说明

  • 如果要降序排序,就改成return b.class_id - a.class_id
  • sort方法会直接修改原数组,所以两次console.log输出的结果是一样的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:17:34