Förstå uppsättningar i JavaScript

By rik

En ny funktion i JavaScript ES6 är Set. Låt oss undersöka vad det innebär.

Vad är egentligen ett Set?

Hur kan vi använda Set i JavaScript?

Och vilka metoder finns tillgängliga för att lösa problem med Set?

Vi kommer att utforska svaren på alla dessa frågor i den här genomgången.

Set

Som namnet antyder, är ett Set en samling av unika element. Det lagrar alltså inte dubbletter av värden.

I JavaScript lagras elementen i ett Set i den ordning de läggs till. Detta innebär att de är ordnade. Set kan innehålla både primitiva datatyper och objekt.

Låt oss titta på hur man skapar ett Set i JavaScript.

Jag förutsätter att du har en utvecklingsmiljö tillgänglig för att öva på exemplen.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);
console.log(namn);

const slumpord = new Set("Hejhejhej");
console.log(slumpord);

const siffror = new Set([1, 1, 2, 3, 3, 4, 5, 2]);
console.log(siffror);

Egenskaper och metoder

Set har ett antal användbara egenskaper och metoder som underlättar hantering och problemlösning. Dessa metoder är ofta självförklarande. Låt oss undersöka dem en efter en.

storlek

Egenskapen `storlek` returnerar antalet element som finns i Set.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);
console.log(`Antal element: ${namn.size}`);

Lägg till

Metoden `add` används för att lägga till ett nytt element till Set. Om elementet redan finns i Set kommer det inte att läggas till igen.

// Tomt Set
const namn = new Set();

namn.add("Kalle");
namn.add("Lisa");
namn.add("Olle");
namn.add("Anna");
namn.add("Lisa");

console.log(namn);

har

Metoden `has` tar ett argument och returnerar `true` om elementet finns i Set, annars returneras `false`.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

console.log(namn.has("Lisa"));
console.log(namn.has("Bertil"));

radera

Som förväntat tar metoden `delete` ett argument och tar bort det från Set. Det uppstår inget fel även om det angivna argumentet inte finns i Set.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

namn.delete("Kalle");

console.log(namn);

poster

Metoden `entries` returnerar en iterator som innehåller arrayer av nyckel-värdepar i infogningsordningen. Här är nyckel och värde identiska.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

const poster = namn.entries();

console.log(poster.next().value);
console.log(poster.next().value);
console.log(poster.next().value);
console.log(poster.next().value);
console.log(poster.next().value);

nycklar

Metoden `keys` returnerar en iterator av Set-element i den ordning de lagts till.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

const nycklar = namn.keys();

console.log(nycklar.next().value);
console.log(nycklar.next().value);
console.log(nycklar.next().value);
console.log(nycklar.next().value);
console.log(nycklar.next().value);

värden

Metoden `values` returnerar en iterator av Set-element i insättningsordningen, precis som metoden `keys`.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

const varden = namn.values();

console.log(varden.next().value);
console.log(varden.next().value);
console.log(varden.next().value);
console.log(varden.next().value);
console.log(varden.next().value);

klar

Metoden `clear` tar bort alla element från Set.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

namn.clear();

console.log(namn);

för varje

Metoden `forEach` används för att iterera över Set och få varje element ett i taget.

const namn = new Set(["Kalle", "Lisa", "Olle", "Anna", "Lisa"]);

namn.forEach((element) => {
    console.log(element);
});

Användningsområden

Låt oss titta på ett enkelt exempel där vi använder Set i ett program. Givet en array, ta bort alla dubbletter av värden. För att lösa det här problemet kan vi använda Set.

Här följer stegen för hur man gör det:

  • Skapa en array med testdata.
  • Skapa ett tomt Set.
  • Gå igenom varje element i arrayen.
    • Lägg till varje element i Set.
    • Set kommer automatiskt att ta bort dubbletter.
  • Skapa en tom array.
  • Gå igenom Set och lägg till varje element i den nya arrayen.
  • Skriv ut den nya arrayen.

Jag hoppas att du kan lösa det här själv. Om du tycker det är svårt att koda, se lösningen nedan.

const arr = ["Kalle", "Lisa", "Olle", "Anna", "Lisa"];

const temp = new Set();

arr.forEach((element) => {
    temp.add(element);
});

const newArr = [];

temp.forEach((element) => {
    newArr.push(element);
});

console.log(newArr);

Slutsats

Nu har du tillräcklig kunskap för att jobba med Set i JavaScript. Du kan använda det i dina framtida projekt. Använd gärna allt du lärt dig.

Lycka till med kodningen! 👨‍💻