JavaScript-kartor


Innehållsförteckning

    Visa innehållsförteckning

En karta innehåller nyckel-värdepar där nycklarna kan vara vilken datatyp som helst.

En karta kommer ihåg den ursprungliga insättningsordningen för nycklarna.

Viktiga kartmetoder

new Map()

Skapar en ny karta

set()

Ställer in värdet för en nyckel i en karta

get()

Hämtar värdet för en nyckel i en karta

delete()

Tar bort ett kartelement som anges med nyckeln

has()

Returnerar sant om det finns en nyckel i en karta

forEach()

Anropar en funktion för varje nyckel/värdepar i en karta

entries()

Returnerar en iterator med paren [nyckel, värde] i en karta

size

Returnerar antalet element i en karta


Hur man skapar en karta

Du kan skapa en JavaScript-karta genom att:

  • Skickar en array till new Map()

  • Skapa en karta och använd Map.set()


Metoden new Map()

Du kan skapa en karta genom att skicka en Array till nya Map()-konstruktorn:

Exempel

// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Creating a Map from an Array:</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

document.getElementById("demo").innerHTML = fruits.get("apples");
</script>

</body>
</html>


Metoden set()

Du kan lägga till element till en karta med metoden set():

Exempel

// Create a Map
const fruits = new Map();

// Set Map Values
fruits.set("apples", 500);
fruits.set("bananas", 300);
fruits.set("oranges", 200);

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Using Map.set():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map();

// Set Map Values
fruits.set("apples", 500);
fruits.set("bananas", 300);
fruits.set("oranges", 200);

document.getElementById("demo").innerHTML = fruits.get("apples");
</script>

</body>
</html>

Metoden set() kan också användas för att ändra befintliga kartvärden:

Exempel

fruits.set("apples", 200);

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Using Map.set():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

fruits.set("apples", 200);

document.getElementById("demo").innerHTML = fruits.get("apples");
</script>

</body>
</html>


Metoden get()

Metoden get() får värdet av en nyckel i en karta:

Exempel

fruits.get("apples");    // Returns 500

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Using Map.get():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

document.getElementById("demo").innerHTML = fruits.get("apples");
</script>

</body>
</html>



Egenskapen size

Egenskapen size returnerar antalet element i en karta:

Exempel

fruits.size;

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Maps</h2>
<p>Using Map.size:</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

document.getElementById("demo").innerHTML = fruits.size;
</script>

</body>
</html>


Metoden delete()

Metoden delete() tar bort ett kartelement:

Exempel

fruits.delete("apples");

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Maps</h2>
<p>Deleting Map elements:</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

// Delete an Element
fruits.delete("apples");

document.getElementById("demo").innerHTML = fruits.size;
</script>

</body>
</html>


Metoden has()

Metoden has() returnerar true om en nyckel finns i en karta:

Exempel

fruits.has("apples");

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Maps</h2>
<p>Using Map.has():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

document.getElementById("demo").innerHTML = fruits.has("apples");
</script>

</body>
</html>

Prova detta:

fruits.delete("apples");
fruits.has("apples");

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Maps</h2>
<p>Using Map.has():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

// Delete an Element
fruits.delete("apples");

document.getElementById("demo").innerHTML = fruits.has("apples");
</script>

</body>
</html>


JavaScript-objekt vs kartor

Skillnader mellan JavaScript-objekt och kartor:

Objekt

Iterabel: Ej direkt iterabel

Storlek: Har ingen storleksegenskap

Nyckeltyper: Nycklarna måste vara strängar (eller symboler)

Nyckelordning: Nycklarna är inte välordnade

Standardinställningar: Har standardnycklar

Karta

Iterable: Direkt iterable

Storlek: Ha en storleksegenskap

Nyckeltyper: Nycklar kan vara vilken datatyp som helst

Nyckelordning: Nycklar ordnas genom infogning

Standardinställningar: Har inga standardnycklar


Metoden forEach()

Metoden forEach() anropar en funktion för varje nyckel/värdepar i en karta:

Exempel

// List all entries
let text = "";
fruits.forEach (function(value, key) {
  text += key + ' = ' + value;
})

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Using Map.forEach():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

let text = "";
fruits.forEach (function(value, key) {
  text += key + ' = ' + value + "<br>"
})

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

Metoden entries()

Metoden entries() returnerar ett iteratorobjekt med [nyckel, värden] i en karta:

Exempel

// List all entries
let text = "";
for (const x of fruits.entries()) {
  text += x;
}

Prova själv →

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Map Objects</h2>
<p>Using Map.entries():</p>

<p id="demo"></p>

<script>
// Create a Map
const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

let text = "";
for (const x of fruits.entries()) {
  text += x + "<br>";
}

document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

Webbläsarstöd

JavaScript-kartor stöds i alla webbläsare, förutom Internet Explorer:

Chrome Edge Firefox Safari Opera