Jak usunąć klawisz „bar” z tablicy foo, aby „bar” nie pojawiał się w
for(key in foo){alert(key);}
Jak usunąć klawisz „bar” z tablicy foo, aby „bar” nie pojawiał się w
for(key in foo){alert(key);}
Odpowiedzi:
Nie używaj funkcji delete, ponieważ nie usunie to elementu z tablicy, ustawi go tylko jako niezdefiniowany, co nie zostanie wtedy poprawnie odzwierciedlone w długości tablicy.
Jeśli znasz klucz, powinieneś użyć splotu tj
myArray.splice(key, 1);
Dla kogoś na pozycji Stevena możesz spróbować czegoś takiego:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
lub
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)zamiast for (key in myArray)- w przeciwnym razie keyjest zmienną globalną i jeśli wywołasz funkcję wewnątrz tej pętli, która ma ten sam problem, otrzymasz nieoczekiwane wyniki.
delete foo[key];
:RE
eval. Usunięcie klucza / indeksu obiektu / tablicy można osiągnąć znacznie prostszymi metodami, które nie są używane eval.
Ważna uwaga: tablice JavaScript nie są tablicami asocjacyjnymi, jak te, do których możesz być przyzwyczajony w PHP. Jeśli twój „klucz tablicy” jest łańcuchem, nie wykonujesz już operacji na zawartości tablicy. Twoja tablica jest obiektem i używasz notacji nawiasów, aby uzyskać dostęp do elementu członkowskiego o nazwie <nazwa klucza>. A zatem:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = true; alert (myArray.length); // zwraca 0.
ponieważ nie dodałeś elementów do tablicy, zmodyfikowałeś tylko elementy bar i foo myArray.
Jeśli znasz nazwę klucza, zrób tak:
delete array['key_name']
Tak bym to zrobił
myArray.splice( myArray.indexOf('bar') , 1)
http://www.internetdoc.info/javascript-function/remove-key-from-array.htm
removeKey(arrayName,key);
function removeKey(arrayName,key)
{
var x;
var tmpArray = new Array();
for(x in arrayName)
{
if(x!=key) { tmpArray[x] = arrayName[x]; }
}
return tmpArray;
}