Legg til en ny verdi i et eksisterende array i JavaScript


I PHP ville jeg gjort noe sånt som:

$array = array();
$array[] = "value1";
$array[] = "value2";
$array[] = "value3";

Hvordan ville jeg gjort det samme i JavaScript?

Svar #1

Du trenger ikke jQuery til det. Bruk vanlig JavaScript

var arr = new Array();
// or var arr = [];
arr.push('value1');
arr.push('value2');

Merk: I JavaScript kan du også bruke objekter som arrayer, men fortsatt ha tilgang til array-prototypene. Dette gjør at objektet oppfører seg som en array:

var obj = new Object();
Array.prototype.push.call(obj, 'value');

vil lage et objekt som ser slik ut:

{
    0: 'value',
    length: 1
}

Du kan få tilgang til verdiene akkurat som i en vanlig matrise, for eksempel obj[0].

Svar #2

Dette har ingenting å gjøre med jQuery, bare JavaScript generelt.

For å lage et array i JavaScript:

var a = [];

Eller :

var a = ['value1', 'value2', 'value3'];

For å legge til verdier på slutten av en eksisterende array:

a.push('value4');

For å lage et nytt array, bør du egentlig bruke [] i stedet for new Array() av følgende grunner:

  • new Array(1, 2) er ekvivalent med [1, 2], men new Array(1) er ikke ekvivalent med [1]. Snarere er sistnevnte nærmere [undefined], siden et enkelt heltallsargument til Array-konstruktøren angir ønsket array-lengde.
  • Array, akkurat som enhver annen innebygd JavaScript-klasse, er ikke et nøkkelord. Derfor kan noen enkelt definere Array i koden din for å gjøre noe annet enn å lage et array.

Svar #3

Array er et JavaScript-innfødt objekt, hvorfor prøver du ikke bare å bruke API-et til det? Å kjenne til API-et alene vil spare deg tid når du bytter til ren JavaScript eller et annet rammeverk.

Det finnes en rekke forskjellige muligheter, så bruk den som i størst grad dekker dine behov.

Oppretter array med verdier:

var array = ["value1", "value2", "value3"];

Legge til verdier på slutten

var array = [];
array.push("value1");
array.push("value2");
array.push("value3");

Legge til verdier i begynnelsen:

var array = [];
array.unshift("value1");
array.unshift("value2");
array.unshift("value3");

Legge til verdier på et visst indeks:

var array = [];
array[index] = "value1";

eller ved å bruke splice

array.splice(index, 0, "value1", "value2", "value3");

Velg en du trenger.

Svar #4

Det finnes flere måter:

Oppretter arrayen:

var arr;

arr = new Array(); // empty array

// ---

arr = [];          // empty array

// ---

arr = new Array(3);
alert(arr.length);  // 3
alert(arr[0]); // undefined

// ---

arr = [3];
alert(arr.length);  // 1
alert(arr[0]); // 3

Legger til i array:

arr = [3];     // arr == [3]
arr[1] = 4;    // arr == [3, 4]
arr[2] = 5;    // arr == [3, 4, 5]
arr[4] = 7;    // arr == [3, 4, 5, undefined, 7]

// ---

arr = [3];
arr.push(4);        // arr == [3, 4]
arr.push(5);        // arr == [3, 4, 5]
arr.push(6, 7, 8);  // arr == [3, 4, 5, 6, 7, 8]

Å bruke .push() er den bedre måten å legge til i et array på, siden du ikke trenger å vite hvor mange elementer som allerede er der, og du kan legge til mange elementer i ett funksjonskall.

Svar #5

Du kan bruke .push()-metoden (som er standard JavaScript)

f.eks.

var primates = new Array();
primates.push('monkey');
primates.push('chimp');

Relaterte artikler