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

如何在JavaScript中消除数组索引间的空间隙?

消除JS数组非连续索引空隙并按原索引排序的简便方法

当你在JavaScript中给数组赋予非连续的随机索引时,数组会产生未初始化的empty空隙,比如:

const arr = [];
arr[5] = 'a'
arr[2] = 'b'
arr[9] = 'c'
arr[0] = 'd'

用console.log输出时会显示包含空隙的数组:['d', empty, 'b', empty × 2, 'a', empty × 3, 'c'],现在需要得到按原索引排序的紧凑数组['d', 'b', 'a', 'c'],有两种非常简便的实现方式:

方法一:使用Array.filter()

filter方法会自动跳过数组中未初始化的empty位置,并且遍历顺序是从索引0到最大索引,刚好满足按原索引排序的需求:

// 过滤所有empty空隙,保留所有已赋值元素(包括undefined)
const compactArr = arr.filter(() => true);

// 如果需要排除值为undefined的元素,可以用:
// const compactArr = arr.filter(item => item !== undefined);

方法二:使用Object.values()

在ES6及以上版本中,Object.values()处理数组时,会按数字索引的升序返回所有已赋值的元素,同样能直接得到目标结果:

const compactArr = Object.values(arr);

这两种方法都非常简短高效,能快速实现你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:15:50