JavaScript稀疏数组

本文介绍了JavaScript中的稀疏数组概念,包括其定义、创建方式及在不同方法中的行为表现。通过对比稀疏数组与常规数组的区别,揭示了稀疏数组在实际应用中的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稀疏数组就是包含从0开始的不连续索引的数组。

以下a和c都为稀疏数组,虽然数组存在长度,但数组单元并不存在。
 
var a = new Array(3);
a; //[undefined × 3]
var b = [undefined, undefined, undefined];
b; //[undefined, undefined, undefined]
var c = [];
c.length = 3;
c; //[undefined × 3]

 

从ES5规范开始允许在列表(数组值,属性列表等)末尾多加一个逗号(但实际处理中会忽略不计)
 
[,,,,].length; //4

 

稀疏数组的行为差异, ES5提供的forEach,map,filter等方法并不会遍历不存在的单元,而join方法由于内部实现的是for循环,因此并不存在这个问题:
 
[,,,].join("-"); //"--"
[undefined,undefined,undefined,].join("-"); //"--"

 

[,,,].map(function(v, i){ consoel.log(i); }); //[undefined × 3]
[undefined,undefined,undefined,].map(function(v, i){ console.log(i); }); //0 1 2 [undefined, undefined, undefined]

 

利用具有length属性的类数组对象,创建非空单元的数组
 
var a = Array.apply(null, {length:3});
a; //[undefined, undefined, undefined]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值