JavaScript pole umožňují, aby skupina hodnot a iterovat nad nimi. Prvky pole můžete přidávat a odstraňovat různými způsoby. Bohužel neexistuje jednoduché pole.odstranit metodu.
Jak tedy odstraníte prvek z pole JavaScript?,
místo metody odstranění má pole JavaScript řadu způsobů, jak vyčistit hodnoty pole.
prvky můžete odstranit z konce pole pomocí pop, od začátku pomocí shift nebo ze středu pomocí splice. Metoda filtru pole JavaScript pro vytvoření nového pole s požadovanými položkami, pokročilejší způsob odstranění nežádoucích prvků.,licitly Odstranit Prvky Pole Pomocí operátoru Delete
Existují různé metody a techniky, které můžete použít k odstranění prvků z pole Javascriptu:
- pop – Odstraní z Konce Pole
- shift – Odebere od začátku Pole
- splice – odstraňuje z určitého indexu Pole
- filtr – umožňuje programatically odstranit prvky z Pole
Budete také naučit některé další způsoby, jak můžete odstranit prvky z pole, které nemusí být tak zřejmé, jako s LoDash.,
odstranění prvků z konce pole JavaScript
prvky pole JavaScript lze odstranit z konce pole nastavením vlastnosti délky na hodnotu menší než aktuální hodnota. Každý prvek, jehož index je větší nebo roven nové délce, bude odstraněn.
var ar = ; ar.length = 4; // set length to remove elements console.log( ar ); //
metoda pop odstraní poslední prvek pole, vrátí tento prvek a aktualizuje vlastnost length. Metoda pop modifikuje pole, na kterém je vyvoláno, což znamená, že na rozdíl od použití odstranit poslední prvek je zcela odstraněn a délka pole snížena.,
var ar = ; ar.pop(); // returns 6 console.log( ar ); //
odstranění prvků ze začátku pole JavaScript
jak odstraníte první prvek pole JavaScript?
metoda shift funguje podobně jako metoda pop, kromě toho, že odstraní první prvek pole JavaScript místo posledního.
neexistují žádné parametry, protože metoda shift odstranila pouze první prvek pole. Když je prvek odstraněn, zbývající prvky jsou posunuty dolů.,
var ar = ; ar.shift(); // returns "zero" console.log( ar ); //
metoda shift vrací odstraněný prvek, aktualizuje indexy zbývajících prvků a aktualizuje vlastnost length. Modifikuje pole, na kterém je vyvoláno.
pokud nejsou žádné prvky, nebo délka pole je 0, metoda vrátí nedefinované.
pomocí Splice odstraňte prvky pole v JavaScriptu
metodu spojování lze použít k přidání nebo odebrání prvků z pole. První argument určuje umístění, ve kterém chcete začít přidávat nebo odstraňovat prvky. Druhý argument určuje počet prvků, které chcete odstranit., Třetí a následující argumenty jsou volitelné; specifikují prvky, které mají být přidány do pole.
Tady jsme použít splice metoda k odstranění dvou prvků od pozice tři (zero based index):
var arr = ; var removed = arr.splice(2,2);
pole obsahující odstraněné prvky se vrátil do sestřihu metodou. Můžete vidět odstraněné pole obsahuje a původní pole obsahuje zbývající hodnoty.
metodu spojování lze také použít k odstranění řady prvků z pole.,
var list = ; list.splice(0, 2); // Starting at index position 0, remove two elements and retains .
Odstranění Pole Položek Podle Hodnoty Pomocí spojovacích
Pokud víte, hodnotu, kterou chcete odstranit z pole můžete použít splice metoda. Nejprve musíte určit index cílové položky. Index pak použijete jako počáteční prvek a odstraníte pouze jeden prvek.
var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); } } //=>
toto je jednoduchý příklad, kde jsou prvky celá čísla. Pokud máte řadu objektů, budete potřebovat sofistikovanější rutinu.
to funguje, pokud chcete odstranit pouze jednu položku., Pokud chcete odstranit více položek, které odpovídají vašim kritériím, dojde k závadě.
když jsou položky odstraněny z pole, index se stále zvyšuje a další položka po přeskočení odpovídající hodnoty.
jednoduché řešení je změnit výše uvedený příklad ke snížení indexu proměnné, takže to není přeskočit na další položku v poli.
var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); i--; } } //=>
v modifikovaném příkladu jsem do pole přidal 2 další hodnoty 5. Také jsem přidal ‚ já–;‘ po spojení hovoru.
Nyní, když spustíte smyčku, odstraní každou odpovídající položku.,
díky Kristian Sletten za poukazování na problém se smyčkou přeskočením následující položky.
pomocí metody filtru pole odeberte položky podle hodnoty
Na rozdíl od metody splice vytvoří filtr nové pole. filtr() nemutuje pole, na kterém se nazývá, ale vrací nové pole.
filtr() má jediný parametr, metodu zpětného volání. Zpětné volání se spustí, když metoda filtru iteruje prostřednictvím prvků pole. Předá tři hodnoty zpětnému volání: aktuální hodnotu nebo prvek, aktuální index pole a celé pole.,
metoda zpětného volání by měla vrátit buď true nebo false. Je vaší povinností otestovat hodnotu (prvek), abyste zjistili, zda splňuje vaše kritéria. Pokud ano, můžete se vrátit true. Prvky, které vrátí true, jsou přidány do nového filtrovaného pole.
var array = ; var filtered = array.filter(function(value, index, arr){ return value > 5; }); //filtered => //array =>
měli byste si uvědomit, že je vráceno nové pole obsahující odpovídající hodnoty. Původní pole je ponecháno nedotčené. Považuji to za užitečné, protože často chci zachovat původní zdroj dat, ale načíst podmnožiny založené na různých logických sadách.,
metoda odstranění pole Lodash
někdy jsou knihovny nástrojů nejlepším způsobem, jak vyřešit složitější problémy. Lodash poskytuje bohatou sadu metod manipulace pole, jeden je odstranit.
metoda odstranění Lodash funguje podobně jako metoda filtru pole, ale tak nějak obráceně. Neukládá původní hodnoty pole, ale odstraňuje odpovídající prvky. Vrací odpovídající prvky jako nové pole.
var array = ;var evens = _.remove(array, function(n) { return n % 2 === 0;});console.log(array);// => console.log(evens);// =>
způsob odebrání
Jak jsem zmínil dříve, neexistuje nativní pole.odstranit metodu., Metoda Lodash lodash tento problém řeší, ale možná nebudete vždy chtít používat Lodash. To neznamená, že nemůžete vytvořit metodu utility. John Resig nám dal model, který bude následovat, nicméně rozšířil prototyp pole, což je špatný nápad.
místo toho jsem vytvořil metodu odstranění pole, kterou lze přidat do knihovny pomocníků nebo nástrojů. Stejně jako metoda Lodash remove je prvním parametrem cílové pole. Používá pole.filtr pro návrat prvků neodpovídajících hodnotě.
tato metoda je jednoduchá, předpokládá jednoduché hodnoty, jako jsou čísla nebo řetězce., Tuto metodu můžete upravit tak, aby používala metodu customcomparison, ale myslím, že by bylo jednodušší použít metodu filtru přímo.
Explicitně Odstranit Prvky Pole Pomocí operátoru Delete
můžete odstranit konkrétní prvky pole pomocí operátoru delete:
var ar = ; delete ar; // delete element with index 4 console.log( ar ); // alert( ar ); // 1,2,3,4,,6
Použití odstranit operátor nemá vliv na délku pozemku. Neovlivňuje ani indexy následných prvků. Pole se stává řídkým, což je efektní způsob, jak říci, že odstraněná položka není odstraněna, ale stane se nedefinovanou. Porovnejte pomocí delete s níže popsanou metodou splice.,
operátor delete je navržen tak, aby odstranil vlastnosti z objektů JavaScript, které Pole jsou objekty.
důvodem, proč prvek není z pole skutečně odstraněn, je, že operátor delete je více o uvolnění paměti než o odstranění prvku. Paměť je uvolněna, pokud neexistují žádné další odkazy na hodnotu.
Vymazat nebo Resetovat Pole Javascriptu
Co když chcete vyprázdnit celé pole a jen vypsat všechny její prvky?
existuje několik technik, které můžete použít k vytvoření prázdného nebo nového pole.,
nejjednodušší a nejrychlejší technika je nastavit proměnnou pole na prázdné pole:
var ar = ;//do stuffar = ;//a new, empty array!
problém to může vytvořit je, když máte odkazy na proměnné. Odkazy na tuto proměnnou se nezmění, budou stále držet hodnoty původního pole. To samozřejmě může vytvořit chybu🐛.
Toto je zjednodušený příklad tohoto scénáře,
var arr1 = ;var arr2 = arr1; // Reference arr1 by another variable arr1 = ; console.log(arr2); // Output
jednoduchý trik chcete-li vymazat pole, je nastavit jeho délku majetku na 0.,
var ar = ;console.log(ar); // Output ar.length = 0;console.log(ar); // Output
další, druh nepřirozené techniky, je použít metodu splice, která prochází délkou pole jako 2. parametr. Tím se vrátí kopie původních prvků, které mohou být užitečné pro váš scénář.
var ar = ;console.log(ar); // Output ar.splice(0, ar.length);console.log(ar); // Output
poslední dvě techniky nevytvářejí nové pole, ale mění prvky pole. To znamená, že odkazy by měly být také aktualizovány.
existuje jiný způsob, pomocí časové smyčky. Připadá mi to trochu divné, ale zároveň vypadá fantasticky, takže to může zapůsobit na některé přátele!,
var ar = ;console.log(ar); // Output while (ar.length) { ar.pop(); }console.log(ar); // Output
není to způsob, jak bych šel o vymazání pole JavaScript, ale funguje to a je čitelný. Některé testy výkonu také ukázaly, že je to nejrychlejší technika, takže možná je to lepší, než jsem si původně myslel!
shrnutí
odstranění položek pole JavaScript je důležité pro správu vašich dat. K dispozici není jediná metoda „odebrat“, ale existují různé metody a techniky, které můžete použít k očištění nežádoucích položek pole.
Tento článek přezkoumal tyto metody a způsob jejich použití., Také jste viděli, jak vytvořit pomocnou metodu, která usnadňuje a konzistentní odstraňování položek z pole.
díky Robovi Sherwoodovi za to, že poukázal na některé syntaktické překlepy!