Et array er en speciel variabel, som kan indeholde mere end én værdi:
const cars = ["Saab", "Volvo", "BMW"];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Hvis du har en liste over elementer (for eksempel en liste over bilnavne), skal du gemme biler i enkelte variable kunne se sådan ud:
let car1 = "Saab";
let car2 = "Volvo";
let car3 = "BMW";
Men hvad nu hvis du vil gå igennem bilerne og finde en bestemt? Og hvad hvis du ikke havde 3 biler, men 300?
Løsningen er en række!
Et array kan indeholde mange værdier under et enkelt navn, og det kan du få adgang til værdierne ved at henvise til et indeksnummer.
Brug af et array literal er den nemmeste måde at oprette et JavaScript-array på.
Syntaks:
const array_name = [item1, item2, ...];
Det er almindelig praksis at erklære arrays med søgeordet const.
Lær mere om const med arrays i kapitlet: JS Array Const.
const cars = ["Saab", "Volvo", "BMW"];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Mellemrum og linjeskift er ikke vigtige. En erklæring kan strække sig over flere linjer:
const cars = [
"Saab",
"Volvo",
"BMW"
];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = [
"Saab",
"Volvo",
"BMW"
];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Du kan også oprette et array og derefter levere elementerne:
const cars = [];
cars[0]= "Saab";
cars[1]= "Volvo";
cars[2]= "BMW";
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = [];
cars[0]= "Saab";
cars[1]= "Volvo";
cars[2]= "BMW";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Følgende eksempel opretter også et array og tildeler værdier til det:
const cars = new Array("Saab", "Volvo", "BMW");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = new Array("Saab", "Volvo", "BMW");
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
De to eksempler ovenfor gør præcis det samme.
Der er ingen grund til at bruge new Array()
.
For enkelhed, læsbarhed og udførelseshastighed skal du bruge array literal-metoden.
Du får adgang til et array-element ved at henvise til indeksnummeret:
const cars = ["Saab", "Volvo", "BMW"];
let car = cars[0];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Bemærk: Array-indekser starter med 0.
[0] er det første element. [1] er det andet element.
Denne sætning ændrer værdien af det første element i biler
:
cars[0] = "Opel";
const cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accessed using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
JavaScript-metoden toString()
konverterer en matrix til en streng af (kommaseparerede) matrixværdier.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
Resultat :
Banana,Orange,Apple,MangoPrøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The toString() Method</h2>
<p>The toString() method returns an array as a comma separated string:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits.toString();
</script>
</body>
</html>
Med JavaScript kan hele arrayet tilgås ved at henvise til arrayet navn:
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Arrays er en speciel type objekter. Operatoren typeof
i JavaScript returnerer "objekt" for arrays.
Men JavaScript-arrays beskrives bedst som arrays.
Arrays bruger tal til at få adgang til dets "elementer". Heri eksempel, person[0]
svarer John:
const person = ["John", "Doe", 46];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Arrays use numbers to access its elements.</p>
<p id="demo"></p>
<script>
const person = ["John", "Doe", 46];
document.getElementById("demo").innerHTML = person[0];
</script>
</body>
</html>
Objekter bruger navne til at få adgang til dets "medlemmer". I dette eksempel, person.firstName
svarer John:
const person = {firstName:"John", lastName:"Doe", age:46};
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Objects</h1>
<p>JavaScript uses names to access object properties.</p>
<p id="demo"></p>
<script>
const person = {firstName:"John", lastName:"Doe", age:46};
document.getElementById("demo").innerHTML = person.firstName;
</script>
</body>
</html>
JavaScript-variabler kan være objekter. Arrays er specielle slags objekter.
På grund af dette kan du have variabler af forskellige typer i samme Array.
Du kan have objekter i et array. Du kan have funktioner i et array. Du kan har arrays i et array:
myArray[0] = Date.now;
myArray[1] = myFunction;
myArray[2] = myCars;
Den virkelige styrke ved JavaScript-arrays er de indbyggede array-egenskaber og metoder:
cars.length // Returns the number of elements
cars.sort() // Sorts the array
Array-metoder er dækket i de næste kapitler.
Egenskaben length
for et array returnerer længden af et array (antallet af array elementer).
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let length = fruits.length;
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The length Property</h2>
<p>The length property returns the length of an array:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let size = fruits.length;
document.getElementById("demo").innerHTML = size;
</script>
</body>
</html>
Egenskaben length
er altid én mere end det højeste matrixindeks.
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[0];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits[0];
</script>
</body>
</html>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[fruits.length - 1];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Bracket Indexing</h2>
<p>JavaScript array elements are accesses using numeric indexes (starting from 0).</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits[fruits.length-1];
</script>
</body>
</html>
En måde at sløjfe gennem et array på er at bruge en for
sløjfe:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text
+= "</ul>";
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Looping an Array</h2>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fLen = fruits.length;
let text = "<ul>";
for (let i = 0; i < fLen; i++) {
text += "<li>" + fruits[i] + "</li>";
}
text += "</ul>";
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Du kan også bruge funktionen Array.forEach()
:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
function
myFunction(value) {
text += "<li>" + value + "</li>";
}
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The forEach() Method</h2>
<p>Call a function for each array element:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let text = "<ul>";
fruits.forEach(myFunction);
text += "</ul>";
document.getElementById("demo").innerHTML = text;
function myFunction(value) {
text += "<li>" + value + "</li>";
}
</script>
</body>
</html>
Den nemmeste måde at tilføje et nyt element til et array er at bruge push()
metoden:
const fruits = ["Banana", "Orange", "Apple"];
fruits.push("Lemon"); // Adds a new element (Lemon) to fruits
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The push() Method</h2>
<p>The push method appends a new element to an array.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits.push("Lemon");
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
Nyt element kan også tilføjes til et array ved hjælp af egenskaben length
:
const fruits = ["Banana", "Orange", "Apple"];
fruits[fruits.length] = "Lemon"; // Adds "Lemon" to fruits
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>The length property provides an easy way to append new elements to an array without using the push() method.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
fruits[fruits.length] = "Lemon";
document.getElementById("demo").innerHTML = fruits;
}
</script>
</body>
</html>
ADVARSEL!
<p>Tilføjelse af elementer med høje indekser kan skabe udefinerede "huller" i en matrix:
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon"; // Creates undefined "holes" in fruits
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Adding elements with high indexes can create undefined "holes" in an array.</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
fruits[6] = "Lemon";
let fLen = fruits.length;
let text = "";
for (i = 0; i < fLen; i++) {
text += fruits[i] + "<br>";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>
</html>
Mange programmeringssprog understøtter arrays med navngivne indekser.
Arrays med navngivne indekser kaldes associative arrays (eller hashes).
JavaScript understøtter ikke arrays med navngivne indekser.
I JavaScript bruger arrays altid nummererede indekser.
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
person.length; // Will return 3
person[0]; // Will return "John"
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p id="demo"></p>
<script>
const person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
ADVARSEL !!
Hvis du bruger navngivne indekser, omdefinerer JavaScript arrayet til et objekt.
Derefter vil nogle array-metoder og egenskaber producere forkerte resultater.
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
person.length; // Will return 0
person[0]; // Will return undefined
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>If you use a named index when accessing an array, JavaScript will redefine the array to a standard object, and some array methods and properties will produce undefined or incorrect results.</p>
<p id="demo"></p>
<script>
const person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
document.getElementById("demo").innerHTML =
person[0] + " " + person.length;
</script>
</body>
</html>
I JavaScript bruger arrays nummererede indekser.
I JavaScript bruger objekter navngivne indekser.
Arrays er en speciel slags objekter med nummererede indekser.
JavaScript understøtter ikke associative arrays.
Du bør bruge objekter, når du vil have elementnavnene strenge (tekst).
Du bør bruge arrays, når du vil have elementnavnene numre.
JavaScript har en indbygget array-konstruktør new Array()
.
Men du kan roligt bruge []
i stedet for.
Disse to forskellige udsagn skaber begge et nyt tomt array med navnet punkter:
const points = new Array();
const points = [];
Disse to forskellige udsagn skaber begge et nyt array, der indeholder 6 numre:
const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Creating an Array</h2>
<p>Avoid using new Array(). Use [] instead.</p>
<p id="demo"></p>
<script>
//const points = new Array(40, 100, 1, 5, 25, 10);
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
nye
søgeordet kan give nogle uventede resultater:
// Create an array with three elements:
const points = new Array(40, 100, 1);
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Create an Array with three elements.</p>
<p id="demo"></p>
<script>
var points = new Array(40, 100, 1);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with two elements:
const points = new Array(40, 100);
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Arrays</h2>
<p>Create an Array with two elements.</p>
<p id="demo"></p>
<script>
var points = new Array(40, 100);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with one element ???
const points = new Array(40);
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Avoid using new Array().</p>
<p id="demo"></p>
<script>
var points = new Array(40);
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
const points = [40];
er ikke det samme som:
const points = new Array(40);
// Create an array with one element:
const points = [40];
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Create an Array with one element.</p>
<p id="demo"></p>
<script>
var points = [40];
document.getElementById("demo").innerHTML = points;
</script>
</body>
</html>
// Create an array with 40 undefined elements:
const points = new Array(40);
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<p>Avoid using new Array().</p>
<p id="demo"></p>
<script>
var points = new Array(40);
document.getElementById("demo").innerHTML = points[0];
</script>
</body>
</html>
Et almindeligt spørgsmål er: Hvordan ved jeg, om en variabel er en matrix?
Problemet er, at JavaScript-operatoren typeof
returnerer "objekt
":
const fruits = ["Banana", "Orange", "Apple"];
let type = typeof fruits;
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The typeof Operator</h2>
<p>The typeof operator, when used on an array, returns object:</p>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = typeof fruits;
</script>
</body>
</html>
Operatortypen returnerer objekt, fordi et JavaScript-array er en objekt.
For at løse dette problem definerede ECMAScript 5 (JavaScript 2009) en ny metode Array.isArray()
:
Array.isArray(fruits);
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The isArray() Method</h2>
<p id="demo"></p>
<script>
const fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = Array.isArray(fruits);
</script>
</body>
</html>
Operatoren instanceof
returnerer sand, hvis et objekt oprettes af en given konstruktør:
const fruits = ["Banana", "Orange", "Apple"];
fruits instanceof Array;
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>The instanceof Operator</h2>
<p>The instanceof operator returns true when used on an array:</p>
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple"];
document.getElementById("demo").innerHTML = fruits instanceof Array;
</script>
</body>
</html>
For en komplet Array-reference, gå til vores:
Komplet JavaScript Array Reference.
Referencen indeholder beskrivelser og eksempler på alle Array egenskaber og metoder.