Fjern Elementer Fra JavaScript-Matriser

JavaScript-matriser kan du gruppere verdiene og iterere over dem. Du kan legge til og fjerne array-elementer på forskjellige måter. Dessverre, det er ikke en enkel Matrise.fjern-metoden.

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

i Stedet for en slette metode, JavaScript utvalg har en rekke måter du kan rengjøre array verdier.

Du kan fjerne elementer fra slutten av en tabell ved hjelp av pop, fra begynnelsen med skift, eller fra midten ved hjelp av skjøte. JavaScript-Array filter metode for å opprette et nytt utvalg med ønskede elementer, som er en mer avansert måte å fjerne uønskede elementer.,licitly Fjerne Array-Elementer ved Hjelp av Slett-Operatør

  • Slett eller Tilbakestille en JavaScript-Array
  • Oppsummering
  • Det finnes forskjellige metoder og teknikker du kan bruke for å fjerne elementer fra JavaScript arrays:

    • pop – Fjerner seg fra Slutten av en tabell
    • shift – Fjerner fra begynnelsen av en Matrise
    • skjøte – fjerner fra et bestemt Utvalg indeks
    • filter – gir deg mulighet til å programatically fjerne elementer fra en Matrise

    Du vil også lære noen andre måter du kan fjerne elementer fra en matrise som kanskje ikke er så opplagt, som med LoDash.,

    Fjerne Elementer fra Slutten av en JavaScript-Array

    JavaScript-Array-elementer kan fjernes fra slutten av en tabell ved innstilling av lengden eiendom til en verdi mindre enn dagens verdi. Et element som indeksen er høyere enn eller lik det nye lengde vil bli fjernet.

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

    pop-metoden fjerner det siste elementet i matrisen, returnerer elementet, og oppdateringer lengden eiendom. Pop-metoden endrer matrise der den er brukt, betyr Dette i motsetning til ved å bruke slette det siste elementet som er fjernet helt og utvalg lengde redusert.,

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

    Fjerne Elementer fra Begynnelsen av en JavaScript-Array

    Hvordan kan du fjerne de første element i en JavaScript-array?

    shift-metoden fungerer mye som pop metode bortsett fra at det fjerner det første elementet i en JavaScript-matrise i stedet for den siste.

    Det er ingen parametre siden skift-metoden bare fjernet den første matrise-elementet. Når elementet er fjernet den gjenværende elementer er flyttet ned.,

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

    shift-metoden returnerer elementet som er fjernet, oppdateringer indeksene av gjenværende elementer, og oppdateringer lengden eiendom. Det endrer utvalg som det er tatt i bruk.

    Hvis det er noen elementer, eller matrise lengde er 0, – metoden returnerer udefinert.

    ved Hjelp av Skjøte å Fjerne Array-Elementer i JavaScript

    skjøte metoden kan brukes til å legge til eller fjerne elementer fra en matrise. Det første argumentet angir stedet for å begynne å legge til eller fjerne elementer. Det andre argumentet angir antall elementer for å fjerne., Den tredje og påfølgende argumenter er valgfrie; de angir elementene som skal legges til i tabellen.

    Her bruker vi skjøte metode for å fjerne to elementer fra posisjon tre (null basert indeks):

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

    array som inneholder den fjernede elementer returneres ved skjøte metode. Du kan se fjernet tabellen inneholder og den opprinnelige tabellen inneholder de resterende verdiene.

    skjøte metoden kan også brukes for å fjerne en rekke elementer fra en matrise.,

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

    Fjerne Array-Elementer Av Verdien ved Bruk av Skjøte på

    Hvis du kjenner verdien du ønsker å fjerne fra en matrise du kan bruke skjøte metode. Først må du identifisere indeksen for mål-elementet. Du kan deretter bruke indeksen som start-element og fjerne bare ett element.

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

    Dette er et enkelt eksempel der elementene er heltall. Hvis du har en array av objekter ville du trenger et mer avansert rutine.

    Dette fungerer hvis du bare vil fjerne en enkelt element., Hvis du ønsker å fjerne flere elementer som matcher dine kriterier det er et problem.

    Som elementene er fjernet fra tabellen indeksen fortsatt intervaller, og det neste elementet etter ditt matchet verdi er hoppet over.

    Den enkle løsningen er å endre ovennevnte eksempel å redusere indeksen variabel slik at det ikke hoppe over det neste elementet i tabellen.

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

    I den modifiserte eksempel jeg har lagt til 2 ekstra 5 verdier til i tabellen. Jeg har også lagt ‘jeg -;’ etter skjøte samtale.

    når du Nå utføre repeterende det vil fjerne alle samsvarende element.,

    Takk til Kristian Sletten for å peke ut problemet med loop hoppe over følgende element.

    ved Hjelp av Matrisen filter Metode for å Fjerne Elementer Av Verdi

    i Motsetning til skjøte metode, filteret oppretter en ny tabell. filteret() ikke mutere matrisen som den er kalt, men returnerer en ny matrise.

    filter() har en enkelt parameter, tilbakeringing metode. Innb. er utløst som filteret metode-koden gjennom array-elementer. Det vil gå over tre verdier til innb.: den aktuelle verdien eller element, den gjeldende tabellen index og komplett utvalg.,

    innb. metoden skal returnere enten sann eller usann. Det er ditt ansvar å teste verdien (element) for å se om det oppfyller dine kriterier. Hvis den gjør det, kan du returnere true. Elementer som returnerer sant er lagt til den nye, filtrert utvalg.

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

    Du bør være oppmerksom på en ny matrise som inneholder samsvarende verdier er returnert. Den opprinnelige matrisen er urørt. Jeg finner dette nyttig fordi jeg ofte ønsker å beholde en opprinnelige datakilden, men hente undergrupper basert på en annen logikk sett.,

    Lodash Utvalg Fjerne Metode

    noen Ganger utility biblioteker er den beste måten å løse mer komplekse problemer. Lodash gir et rikt sett av array manipulasjon metoder, man blir fjern.

    Lodash fjerne metoden fungerer mye som tabellen filter metode, men sorter av i revers. Det lagres ikke i den opprinnelige matrisen verdier, men det fjerner samsvarende elementer. Det gir samsvarende elementer som en ny matrise.

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

    Gjør et Fjern-Metoden

    Som jeg mentionmed før, det er ingen native-Matrise.fjern-metoden., Den Lodash metoden ikke løse dette problemet, men du kan ikke alltid ønsker å bruke Lodash. Dette betyr ikke at du ikke kan lage et verktøy metode. John Resig ga oss en modell å følge, men han utvidede Matrisen prototype, som er en dårlig idé.

    i Stedet laget jeg en Matrise fjerne verktøyet metode som kan være lagt til en hjelper eller verktøy bibliotek. Som Lodash fjern-metoden den første parameteren er målet utvalg. Den bruker Matrise.filter for å gå tilbake elementer som ikke samsvarer med en verdi.

    Denne metoden er enkel, det forutsetter enkle verdier som tall eller strenger., Du kan endre denne metoden å bruke en customcomparison metoden, men jeg tror det ville være lettere å bare bruke filter-metoden direkte.

    Eksplisitt Fjerne Array-Elementer ved Hjelp av Slett-Operatør

    Du kan fjerne bestemte array-elementer ved hjelp av slett operatør:

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

    ved Hjelp av slett-operatøren ikke påvirke lengden eiendom. Heller ikke det påvirke indekser av påfølgende elementer. Matrisen blir sparsom, som er en fancy måte å si slettede elementet er ikke fjernet, men blir udefinert. Sammenlign bruke slett med skjøte metoden som er beskrevet nedenfor.,

    slett operatør er utviklet for å fjerne egenskaper fra JavaScript-objekter, som matriser er objekter.

    grunnen til At elementet er faktisk ikke fjernet fra tabellen er slett operatør er mer om å frigjøre minne i stedet for å slette et element. Minnet er frigjort når det ikke er flere referanser til verdi.

    Slett eller Tilbakestille en JavaScript-Array

    hvis du vil tømme en hel utvalg og bare dumpe alt det elementer?

    Det er et par teknikker du kan bruke for å opprette en tom eller nye tabellen.,

    Den enkleste og raskeste teknikken er å stille en rekke variable til en tom matrise:

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

    problemet dette kan opprette, er når du har referanser til variabelen. Referansene til denne variabelen vil ikke endre seg, vil de fortsatt holder den opprinnelige matrisen s verdier. Dette selvfølgelig kan opprette en bug🐛.

    Dette er et forenklet eksempel på dette scenariet:

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

    Et enkelt triks for å fjerne en matrise er å sette sin lengde eiendom til 0.,

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

    en Annen, en form for unaturlig teknikk, er å bruke skjøte metode, passerer utvalg lengde som 2. parameter. Dette vil gi en kopi av den originale elementer, som kan være nyttig for din situasjon.

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

    De to siste teknikkene ikke opprette en ny tabell, men endre tabellen er elementer. Dette betyr referanser bør også oppdatere.

    Det er en annen måte, ved hjelp av en while-løkke. Det føles litt merkelig for meg, men på samme tid ser lyst på, så det kan imponere noen venner!,

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

    Ikke en måte jeg ville gå om å fjerne en JavaScript-array, men det fungerer og det er lesbar. Noen ytelse tester har også vist at dette skal være den raskeste teknikken, så det er kanskje bedre enn jeg opprinnelig trodde!

    Oppsummering

    å Fjerne JavaScript Array-elementer er viktig for å administrere dine data. Det er ikke en eneste ‘fjern’ – metoden tilgjengelig, men det er ulike metoder og teknikker som du kan bruke til å slette uønskede array-elementer.

    Denne artikkelen har gjennomgått disse metodene, og hvordan de kan brukes., Du så også hvordan å lage en hjelpe-metode som gjør fjerne elementer fra en matrise litt enklere og konsistent.

    Takk for å Rane Sherwood for å peke ut noen syntaktiske skrivefeil!