Jeszcze taka krótka notka o usuwaniu elementów z tablicy.

Zauważyłem, że czasem programiści używają delete do usuwania elementów z tablicy. Czasem może to być błędem. Dlaczego? A no dlatego, że czasem programiście chodzi o całkowite usunięcie elementu. „Ale… jak to całkowicie?” – można zapytać. A już wyjaśniam 🙂

Gdy użyje się delete, wtedy w miejsce usuwanego elementu jest wstawiana wartość undefined:

var arr = ["pierwszy", "drugi", "trzeci", "czwarty"];
console.log(arr);

>>>["pierwszy", "drugi", "trzeci", "czwarty"]

delete arr[1];
console.log( arr);

>>>["pierwszy", <strong>undefined</strong>, "trzeci", "czwarty"]

console.log(arr.length);

>>>4

Można by się spodziewać, że po tej operacji tablica będzie miała trzy elementy. Niestety tak jest nie jest (albo „stety”, o tym za chwilę 😉 ).
By całkowicie pozbyć się elementu z tablicy, można użyć metody splice:

arr.splice(1,1);
console.log(arr);

>>>["pierwszy", "trzeci", "czwarty"]

console.log(arr.length);

>>>3

Czasem celowo można mieć na uwadze, by elementy do usunięcia były zastępowane przez undefined, np. podczas usuwania danych podczas przechodzenia przez tablicę pod ściśle ustalonymi kryteriami.

var
   arr = ["pierwszy", "drugi", undefined, "trzeci", "czwarty"],
   i,
   pattern = /(r|s|c)(z)/ig;

for (i = arr.length; i--;) {
   if (pattern.test(arr[i])) {
      delete arr[i];
   }
}

console.log(arr);

>>>[undefined, "drugi", undefined, "trzeci", undefined]

for (i = arr.length; i--;) {
   if ("undefined" === typeof arr[i]) {
      arr.splice(i, 1);
   }
}

console.log(arr);

>>>["drugi", "trzeci"]