Sparse Array
📌 宽松数组(Sparse Array)是什么?
Sparse Array)是什么?宽松数组(Sparse Array) 是指数组中包含未定义的索引(稀疏索引)的数组。也就是说,这个数组的长度可能大于它实际拥有的元素数。
// 例子1:宽松数组
const sparseArray = [1, , 3]; // 中间有一个空的元素
console.log(sparseArray.length); // 输出 3
console.log(Object.keys(sparseArray)); // 输出 ["0", "2"]
// 例子2:非宽松数组
const denseArray = [1, 2, 3];
console.log(denseArray.length); // 输出 3
console.log(Object.keys(denseArray)); // 输出 ["0", "1", "2"]
✅ 判断数组是否为宽松数组的方法
1️⃣ 方法 1:通过 Object.keys() 判断实际键的数量
Object.keys() 判断实际键的数量如果数组的长度 length 大于实际键的数量,说明是宽松数组。
function isSparseArray(arr) {
if (!Array.isArray(arr)) return false;
return Object.keys(arr).length < arr.length;
}
console.log(isSparseArray([1, , 3])); // true
console.log(isSparseArray([1, 2, 3])); // false2️⃣ 方法 2:用 for...in 遍历数组
for...in 遍历数组for...in 只会遍历实际存在的索引。如果遍历的次数小于数组的长度,说明是宽松数组。
3️⃣ 方法 3:用 hasOwnProperty 判断未定义的索引
hasOwnProperty 判断未定义的索引遍历数组的长度,并检查每个索引是否是该数组的自有属性。
🧪 推荐方法:
使用 hasOwnProperty 是最准确的方式:
⚙️ 验证宽松数组的用例
最后更新于
这有帮助吗?