Fjerne Elementer Fra JavaScript Arrays

JavaScript arrays giver dig mulighed for at gruppere værdier og iterere over dem. Du kan tilføje og fjerne arrayelementer på forskellige måder. Desværre er der ikke et simpelt Array.fjern metode.

så hvordan sletter du et element fra et JavaScript-array?,

i stedet for en sletningsmetode har JavaScript-arrayet en række forskellige måder, du kan rense arrayværdier på.

Du kan fjerne elementer fra slutningen af et array ved hjælp af pop, fra begyndelsen ved hjælp af shift, eller fra midten hjælp splice. JavaScript Array filter metode til at oprette en ny Matri with Med ønskede elementer, en mere avanceret måde at fjerne uønskede elementer.,licitly Fjerne Array-Elementer ved Hjælp af Delete Operator

  • slette eller Nulstille et JavaScript Array
  • Oversigt
  • Der er forskellige metoder og teknikker, du kan bruge til at fjerne elementer fra JavaScript arrays:

    • pop – Fjerner fra Udgangen af et Array
    • shift – Fjerner fra begyndelsen af et Array
    • splice – fjerner fra en bestemt Array index
    • filter – giver dig mulighed for at programmeringsmæssigt fjerne elementer fra en bred Vifte

    Du vil også lære nogle andre måder, du kan fjerne elementer fra et array, der kan ikke være så indlysende, ligesom med LoDash.,

    fjernelse af elementer fra slutningen af et JavaScript-Array

    JavaScript-arrayelementer kan fjernes fra slutningen af et array ved at indstille egenskaben længde til en værdi, der er mindre end den aktuelle værdi. Ethvert element, hvis indeks er større end eller lig med den nye længde, fjernes.

     var ar = ; ar.length = 4; // set length to remove elements console.log( ar ); // 

    pop-metoden fjerner det sidste element i arrayet, returnerer dette element og opdaterer egenskaben længde. Pop-metoden ændrer arrayet, som det påberåbes, dette betyder i modsætning til at bruge slet det sidste element fjernes fuldstændigt, og arraylængden reduceres.,

     var ar = ; ar.pop(); // returns 6 console.log( ar ); // 

    fjernelse af elementer fra begyndelsen af et JavaScript-Array

    hvordan fjerner du det første element i et JavaScript-array?skiftmetoden fungerer meget som pop-metoden, bortset fra at den fjerner det første element i et JavaScript-array i stedet for det sidste.

    Der er ingen parametre, da skiftmetoden kun fjernede det første array-element. Når elementet fjernes, forskydes de resterende elementer ned.,

     var ar = ; ar.shift(); // returns "zero" console.log( ar ); // 

    skiftmetoden returnerer det element, der er blevet fjernet, opdaterer indekserne for resterende elementer og opdaterer egenskaben længde. Det ændrer arrayet, som det påberåbes.

    hvis der ikke er nogen elementer, eller arraylængden er 0, returnerer metoden udefineret.

    brug af Splice til at fjerne Array-elementer i JavaScript

    splejsemetoden kan bruges til at tilføje eller fjerne elementer fra et array. Det første argument angiver det sted, hvor man skal begynde at tilføje eller fjerne elementer. Det andet argument angiver antallet af elementer, der skal fjernes., Den tredje og efterfølgende argumenter er valgfri; de angiver elementer, der skal føjes til arrayet.

    Her bruger vi splejse metode til at fjerne to elementer startende fra position (nul baseret index):

     var arr = ; var removed = arr.splice(2,2); 

    Et array, der indeholder den fjernede elementer, der returneres af splejse metode. Du kan se den fjernede Matri contains indeholder og den oprindelige Matri.indeholder de resterende værdier.splejsemetoden kan også bruges til at fjerne en række elementer fra et array.,

     var list = ; list.splice(0, 2); // Starting at index position 0, remove two elements and retains .

    fjernelse af arrayelementer efter værdi ved hjælp af Splice

    Hvis du kender den værdi, du vil fjerne fra et array, kan du bruge splejsemetoden. Først skal du identificere indekset for målelementet. Du bruger derefter indekset som startelement og fjerner kun et element.

     var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); } } //=> 

    Dette er et simpelt eksempel, hvor elementerne er heltal. Hvis du har en række objekter, skal du have en mere sofistikeret rutine.

    Dette fungerer, hvis du kun vil fjerne et enkelt element., Hvis du vil fjerne flere elementer, der matcher dine kriterier, er der en fejl.

    da emnerne fjernes fra arrayet, øges indekset stadig, og det næste element, efter at din matchede værdi er sprunget over.

    den enkle løsning er at ændre ovenstående eksempel til at reducere indeksvariablen, så den ikke springer over det næste element i arrayet.

     var arr = ; for( var i = 0; i < arr.length; i++){ if ( arr === 5) { arr.splice(i, 1); i--; } } //=> 

    i det ændrede eksempel tilføjede jeg 2 yderligere 5 værdier til arrayet. Jeg tilføjede også ‘i–;’ efter splejsningsopkaldet.

    nu, når du udfører løkken, fjerner den hvert matchende element.,

    tak til Kristian Sletten for at påpege problemet med løkken, der springer over følgende emne.

    brug af Arrayfiltermetoden til at fjerne elementer efter værdi

    i modsætning til splejsemetoden opretter filter et nyt array. filter () muterer ikke det array, det kaldes på, men returnerer et nyt array.

    filter() har en enkelt parameter, en tilbagekaldsmetode. Tilbagekald udløses, når filtermetoden gentager sig gennem arrayelementerne. Det overfører tre værdier til tilbagekald: den aktuelle værdi eller element, det aktuelle arrayindeks og det fulde array.,

    tilbagekaldsmetoden skal returnere enten true eller false. Det er dit ansvar at teste værdien (elementet) for at se, om det opfylder dine kriterier. Hvis det gør du kan returnere sand. Elementer, der returnerer true, føjes til det nye, filtrerede array.

     var array = ; var filtered = array.filter(function(value, index, arr){ return value > 5; }); //filtered => //array => 

    Du bør bemærke, at en ny Matri., der indeholder matchende værdier, returneres. Det oprindelige array er uberørt. Jeg finder dette nyttigt, fordi jeg ofte ønsker at beholde en original datakilde, men hente delmængder baseret på forskellige logiske sæt.,

    Lodash-arrayet Fjern metode

    Nogle gange er hjælpebiblioteker den bedste måde at løse mere komplekse problemer på. Lodash giver et rigt sæt af array manipulation metoder, hvoraf den ene er fjerne.

    Lodash remove-metoden fungerer meget som arrayfiltermetoden, men slags omvendt. Det gemmer ikke de oprindelige arrayværdier, men fjerner matchende elementer. Det returnerer de matchende elementer som et nyt array.

    var array = ;var evens = _.remove(array, function(n) { return n % 2 === 0;});console.log(array);// => console.log(evens);// => 

    gør en fjern metode

    som jeg nævnte før, er der ingen indbygget Array.fjern metode., Lodash-lodash-metoden løser dette problem, men du vil måske ikke altid bruge Lodash. Dette betyder ikke, at du ikke kan oprette en hjælpemetode. John Resig gav os en model at følge, men han udvidede Array prototypen, hvilket er en dårlig id..

    i stedet oprettede jeg en Array fjern hjælpemetode, der kan føjes til en hjælper eller hjælpebibliotek. Ligesom Lodash fjern metode den første parameter er målet array. Det bruger Array.filtrer for at returnere elementer, der ikke matcher en værdi.

    denne metode er enkel, den antager enkle værdier som tal eller strenge., Du kan ændre denne metode til at bruge en customcomparison metode, men jeg tror, det ville være lettere at bare bruge filtermetoden direkte.

    Udtrykkeligt Fjerne Array-Elementer ved Hjælp af Delete Operator

    Du kan fjerne specifikke array-elementer ved hjælp af delete operator:

     var ar = ; delete ar; // delete element with index 4 console.log( ar ); // alert( ar ); // 1,2,3,4,,6

    ved Hjælp af delete operator, påvirker ikke længden ejendom. Det påvirker heller ikke indekserne for efterfølgende elementer. Arrayet bliver sparsomt, hvilket er en fancy måde at sige, at det slettede element ikke fjernes, men bliver udefineret. Sammenlign ved hjælp af Slet med splejsemetoden beskrevet nedenfor.,

    sletningsoperatøren er designet til at fjerne egenskaber fra JavaScript-objekter, hvilke arrays er objekter.

    grunden til, at elementet faktisk ikke fjernes fra arrayet, er, at sletningsoperatøren handler mere om at frigøre hukommelse end at slette et element. Hukommelsen frigøres, når der ikke er flere henvisninger til værdien.

    Ryd eller Nulstil et JavaScript-Array

    Hvad hvis du vil tømme et helt array og bare dumpe alle dets elementer?

    der er et par teknikker, du kan bruge til at oprette et tomt eller nyt array.,

    den enkleste og hurtigste teknik er at indstille en arrayvariabel til et tomt array:

    var ar = ;//do stuffar = ;//a new, empty array!

    det problem, dette kan oprette, er, når du har henvisninger til variablen. Henvisningerne til denne variabel vil ikke ændre sig, de vil stadig holde den oprindelige array værdier. Dette kan selvfølgelig oprette en fejl🐛.

    Dette er et over forenklet eksempel på dette scenario:

    var arr1 = ;var arr2 = arr1; // Reference arr1 by another variable arr1 = ; console.log(arr2); // Output 

    et simpelt trick til at rydde et array er at indstille dets længdeegenskab til 0.,

    var ar = ;console.log(ar); // Output ar.length = 0;console.log(ar); // Output 

    en anden, slags unaturlig teknik, er at bruge splejsemetoden, der passerer arraylængden som 2.parameter. Dette returnerer en kopi af de originale elementer, som kan være praktisk til dit scenarie.

    var ar = ;console.log(ar); // Output ar.splice(0, ar.length);console.log(ar); // Output 

    de to sidste teknikker opretter ikke et nyt array, men ændrer arrayets elementer. Dette betyder, at referencer også skal opdateres.

    Der er en anden måde, ved hjælp af et stykke tid loop. Det føles lidt underligt for mig, men ser samtidig fancy ud, så det kan imponere nogle venner!,

    var ar = ;console.log(ar); // Output while (ar.length) { ar.pop(); }console.log(ar); // Output 

    Ikke en måde, jeg ville gå om at rydde et JavaScript-array, men det virker, og det kan læses. Nogle præstationstest har også vist, at dette er den hurtigste teknik, så måske er det bedre, end jeg oprindeligt troede!

    resum.

    fjernelse af JavaScript-arrayelementer er vigtigt for at administrere dine data. Der er ikke en enkelt ‘fjern’ metode til rådighed, men der er forskellige metoder og teknikker, du kan bruge til at rense uønskede array elementer.

    Denne artikel har gennemgået disse metoder, og hvordan de kan bruges., Du så også, hvordan du opretter en hjælpemetode, der gør fjernelse af elementer fra en Matri.lidt lettere og konsistent.

    tak til Rob Sher !ood for at påpege nogle syntaktiske stavefejl!