稀疏陣列與密集陣列
阿新 • • 發佈:2021-06-18
稀疏陣列
稀疏陣列:索引不連續,陣列長度大於元素個數的陣列, 可以簡單理解為有empty的陣列,類似於empty元素代表這個位置沒有初始化,
let arr1 = new Array(5);
console.log(arr1);
let arr = [1, 3, , ,];
console.log(arr);
empty與undefined
empty代表陣列連這個索引都沒有初始化,undefined是代表索引初始化了,只是存入的值是undefined
判斷稀疏陣列元素
通過in
let arr1 = [1, 3, , , , 45]; console.log(arr1, "arr1"); let len = arr1.length >>> 0; let A = new Array(len); for (let i = 0; i < len; i++) { //判斷原型是否有 i if (i in arr1) { console.log(arr1[i]); } }
所以稀疏陣列在大多數遍歷陣列的方法中,遇到「empty」元素的時候,callback 函式是不會執行的,如:map等
具體的實現就是通過in判斷的
所以在很多在自己實現map等遍歷方法的時候都需要加一句 if (k in O)來排除empty元素
密集陣列
密集陣列:索引連續, 陣列長度等於元素個數的陣列
let arr = [1, 3, 4, 5, 2];
console.log(arr);