稀疏数组

1、定义:没有从0开始的连续的index(注意连续的理解)

A sparse array is one in which the elements do not have contiguous indexes starting at 0

2、稀疏数组
var arr0 = [,,,]
var arr1 = [1,,2,]
var arr2 = new Array(3)
var arr3 = new Array()
arr3.length = 3
var arr4 = [1,2,3]
delete arr4[0] //delete只是删除了数组元素,但是位置还有空了下来
console.log(arr4) //[empty, 2, 3]
3、非稀疏数组
var arr4 = [1,2,3]
arr4.shift() 
var arr5 = [undefined, undefined, undefined]
var arr6 = new Array(3); arr6[0] = undefined; arr6[1] = undefined; arr6[2] = undefined
4、说明

(1)、虽然arr2,arr3和arr5,arr6看起来都是undefined,但是其实不一样。arr5和arr6都是显式初始化(赋值)每个元素为undefined。

5、判断一个数组是否为稀疏数组
方法一 : 
var realCount = 0;
array.forEach(function() { realCount ++;});
if(realCount !== array.length) console.log('稀疏数组');
原理:当作用与稀疏数组时,这些方法不会在实际上不存在的的元素序号上调用函数。
这些方法包括(foreach()、map()、filter()、every()、some())
方法二 : index in array,是否从0到array.length - 1这个表达式都返回true,如果不是,则表示为稀疏数组。
let arr1 = [undefined,,,]
for(var j = 0; j < arr1.length; j++ ) {
     //console.log(j in arr1)
    if(!(j in arr1)) {
        console.log('稀疏数组')
        break;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容