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], mennew Array(1)er ikke ekvivalent med[1]. Snarere er sistnevnte nærmere[undefined], siden et enkelt heltallsargument tilArray-konstruktøren angir ønsket array-lengde.Array, akkurat som enhver annen innebygd JavaScript-klasse, er ikke et nøkkelord. Derfor kan noen enkelt definereArrayi 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');
