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

JavaScript数组排序后去除零元素的技术实现问题咨询

数组排序并过滤零的实现

修正排序逻辑+过滤零

你的原代码里a.num、b.num是多余的(数组元素为直接数字,并非带num属性的对象),这里给出两种可行方案:

方案一:先排序再过滤

先将数组按「非零元素升序、零置于末尾」排序,再过滤掉所有零:

var data = [1,6,5,0,9,8,0];
// 正确排序逻辑:零放末尾,其余升序
data.sort((a, b) => {
    if (a === 0) return 1;
    if (b === 0) return -1;
    return a - b;
});
// 过滤零元素
const result = data.filter(item => item !== 0);
console.log(result); // 输出:[1,5,6,8,9]

方案二:先过滤再排序

如果不需要保留含零的原排序数组,可直接先过滤零,再对剩余元素排序,逻辑更简洁高效:

var data = [1,6,5,0,9,8,0];
const result = data.filter(item => item !== 0).sort((a, b) => a - b);
console.log(result); // 输出:[1,5,6,8,9]

场景说明

  • 方案一适合需要同时保留「含零的完整排序数组」和「过滤后的无零数组」的场景;
  • 方案二更高效,因为过滤后数组元素更少,排序计算量更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:00:31