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.