JavaScript: Jak smazat záznam key+value z pole? delete nebo splice?

Mějme následující JavaScriptový kód definující jednorozměrné pole:

var myHash = new Array();
myHash[0] = 'JavaScript je';
myHash[1] = 'prostě';
myHash[2] = 'zábava.';

Jak smazat druhou položku (key+value) z JavaScriptového pole?

Když se rozhodneme smazat druhou položku pole (prostě) pomocí delete:

delete myHash[1];

…dostaneme:

var myHash = new Array();
myHash[0] = 'JavaScript je';
myHash[1] = null;
myHash[2] = 'zábava.';

Pokud tedy očekáváte, že se smaže celá druhá položka, tak nikoli. Což může být někdy problém.

$.each(myHash, function(key, value) {
 alert(value);
});

…vypíše v následujících krocích:

1/ JavaScript je
2/ undefined
3/ zábava.

Smazání položky pole pomocí metody splice

Pro odstranění celého záznamu (key+value) je proto rozumnější použít metodu splice:

myHash.splice(1, 1);

Po otestování:

$.each(myHash, function(key, value) {
 alert(value);
});

…vypíše:

1/ JavaScript je
2/ zábava.

Více info o splice na w3schools.com.




Leave a Reply