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;
}
}