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

如何在JavaScript中按upvote数组长度对对象数组降序排序?

解决Lodash orderBy按数组长度降序排序异常问题

问题原因

你的代码存在两个关键问题:

  • 语法错误:调用orderBy时缺少闭合括号,导致排序方向参数未被正确识别,Lodash默认使用升序排序;
  • 未处理null值:当upvote为null时,i?.upvote?.length返回undefined,Lodash对undefined的排序逻辑可能干扰结果。

正确实现代码

const sortedArr = _.orderBy(arr, (item) => item?.upvote?.length || 0, 'desc');

代码说明

  • item?.upvote?.length || 0:将upvote为null时的undefined转为0,确保所有排序依据都是数字,避免异常排序;
  • 'desc':单个排序维度下直接使用字符串指定降序即可(用['desc']也有效,两者兼容)。

排序结果验证

针对你的示例数组,排序后顺序为:

  1. Test?(upvote数组长度为2)
  2. dummy question?(upvote数组长度为1)
  3. Hello?(upvote为null,按长度0处理)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:30:53