什么是稀疏数组
我们通常使用的数组都是“满坑满谷”的,也就是说数组中的每一个下标都有对应的值。例如:
const arr = [2, 3, 4, 5, 6];
在这个数组中,所有的元素从第一个到最后一个都有定义。然而,有时候我们可能会遇到数组中的某些元素缺失了,没有被定义。这种情况下,我们称这个数组为稀疏数组。稀疏数组中的某些项是空的,不是 undefined
,而是什么也没有。在控制台打印稀疏数组时会看到如下情况:
const arr = [2, , , 51, 2];
console.log(arr.length); // 5
console.log(arr); // [2, empty item, empty item, 51, 2]
**稀疏数组的特点它并不是没有值的地方是 undefined
,而是这个地方啥也没有。**这种稀疏数组的某一些遍历函数,会将缺失的值的项跳过:
const arr = [2, , , 51, 2, , ,];
arr.forEach((item, index) => {
console.log(item, index);
});
本来数组的长度是7,但是它只打印了3次,这就是稀疏数组的一个特点,数组项的总数和数组长度不一致。
如何判断
function isSparseArray(arr) {
if (!Array.isArray(arr)) {
return false;
}
// 根据稀疏数组的特点,当 某个索引在数组中不存在时,直接返回 true
for (let i = 0; i < arr.length; i++) {
if (!(i in arr)) {
return true;
}
}
return false;
}
const arr = [2, , , 51, 2, ,];
console.log(isSparseArray(arr));