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
相关产品推荐
相关产品推荐

