1. 程式人生 > 其它 >稀疏陣列與密集陣列

稀疏陣列與密集陣列

稀疏陣列

稀疏陣列:索引不連續,陣列長度大於元素個數的陣列, 可以簡單理解為有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);