s

稀疏数组和密集数组。

密集数组: 占据连续的内存空间,数组元素之间紧密相连,不存在empty

稀疏数组:数组元素之间存在间隙。

 

ex:

const arr1 = [1,2,3]  这样定义的一个 数组 arr1 就是一个密集数组

 

const arr2 = [1,2,3]  

arr2[8] = 8 

打印arr2 会发现 : 

 [12, 3, 4, empty × 5, 8],输出结果是这样的,中间有五个空 empty。像这样的数组就称之为稀疏数组。

 

稀疏数组的特点: 无法 通过 filter,map等方法处理这些个empty 值。 因为 阅读 filter,map 源码, 里面都设置及到一个 in 操作符。 然而  empty的 索引值 去 使用 in 操作时,一律都是 false   ,arr2第一个empty出现在3 索引  但是 3 in arr2 =》 返回 false。所以 使用 foreach, filter, map 等去处理这些empty值的时候都不会成功。

 

//得到稀疏数组。

 

const arr = new Array(3) => 会得到稀疏数组。

 

//得到密集数组的几种方法:

Array.apply(null, Array(3))

Array.from({length:3},() =>{});  这里传入一个包含长度的对象和 回调,回调用于对生成的数组的每个元素进行处理。

Array(3).fill(undefined);  //从这里看出 这三种方式默认都是生成长度为3,数组元素都是undefined的数组!!!

 

 

 

posted @ 2022-07-07 14:36  努力不搬砖的iori  阅读(52)  评论(0编辑  收藏  举报