2011-06-03 8 views
5

In JavaScript, se si imposta una matrice di dimensioni 5 (var foo = new Array(5);), si tratta solo di una dimensione iniziale? Puoi espandere il numero di elementi dopo che è stato creato. È possibile fare qualcosa del genere - arr = new Array() e poi semplicemente assegnare gli elementi uno per uno? Grazie in anticipo :-)Come funzionano le dimensioni degli array in Javascript

risposta

5

Sì, è solo una dimensione iniziale, e non è necessario. Se non si utilizza un numero singolo, è possibile popolarlo immediatamente.

È anche più comune utilizzare la sintassi più semplice [].

var arr = ['something', 34, 'hello']; 

È possibile impostare (o sostituire) un indice specifico usando le parentesi:

arr[0] = "I'm here replacing whatever your first item was"; 

È possibile aggiungere alla fine utilizzando push:

arr.push('add me'); 

Ci possono essere prestazioni più veloci in alcuni browser se lo fai invece:

arr[arr.length] = 'add me'; 

È possibile aggiungere qualcosa a qualsiasi indice.

È possibile rimuovere un elemento completamente con giunzione:

arr.splice(0, 1); // remove first item in the array (start at index 0, with 1 being removed) 
+0

Il [] è simile a un array anonimo? – rubixibuc

+0

@rubixibuc: No, è un array letterale. –

+0

Qual è la differenza tra un array letterale e un array anonimo? (sry se questa è una domanda stupida: - /) – rubixibuc

5

Quando si dà un nuovo array di dimensioni esplicita in JavaScript (utilizzando new Array(5)), si popola ogni indice con valore undefined. E 'generalmente considerato migliore pratica di creare un'istanza utilizzando l'array letterale [] espressione:

var arr = []; 

Poi, si può spingere nuovi elementi utilizzando push()

var arr = []; 
arr.push('first value'): 
arr.push('second value'): 

Controllare la documentazione Array MDC per ulteriori informazioni: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

+1

effettivo Quando scriviamo 'new Array (5)', ogni indice è ancora 'indefinito' (che è diverso da' null'). È più come fare 'var arr = []; arr.length = 5; '. –

+0

Ah sì, indefinito anziché null. Correggerà. –

1

Controllare the documentation for Array, ma la semplice risposta alla tua domanda è .

var arr5 = new Array(1, 2, 3, 4, 5); // an array with initial 5 elements 
var arr = new Array(); // an array without initial 

È inoltre possibile utilizzare letterali di array:

var arr5 = [1, 2, 3, 4, 5]; 
var arr = []; 
+0

Volevo solo sottolineare che la versione 'new Array (5)' è ** non ** identica a '[1, 2, 3, 4, 5]'! –

+0

@Felix, hai assolutamente ragione. Le mie giornate in Java sono iniziate. Ho aggiornato la mia risposta. –

2

Theres alcuni modi per dichiarare e mettere i valori in un array.

In primo luogo come quello che si vuole fare,

var myarr = new Array(); 
myarr[0] = 'element1'; 
myarr[1] = 'element2'; 
myarr[2] = 'element3'; 

secondo modo è quello di definire loro

var myarr =new Array("element1","element2","element3"); 

e la terza è simile alla seconda

var myarr =["element1","element2","element3"]; 

È inoltre possibile controllare out https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array per ulteriori informazioni sull'utilizzo degli array. Potresti usare push e pop se vuoi anche tu.

Se si utilizzano jquery o mootools, hanno anche funzioni integrate da eseguire sugli array, ad esempio http://api.jquery.com/jQuery.each/.

0

Gli array sono dinamici in JavaScript. Non è necessario inizializzarli con una certa lunghezza. In realtà si dovrebbe usare la notazione letterale [] causa dell'ambiguità del Array del costruttore:

Se si passa un solo parametro per Array, imposterà la lunghezza della matrice a questo parametro. Se si passa più di un parametro, questi elementi vengono aggiunti all'array.

Come vengono determinate le dimensioni della matrice?

La dimensione di un array è l'indice più alto + 1. Questo può essere piuttosto confuso. Considerate questo:

var arr = []; 
arr[41] = 'The answer?'; 
console.log(arr); // [undefined, undefined, ..., 'The answer?'] 
console.log(arr.length) // 42 

È anche possibile impostare la lunghezza da soli assegnando un numero di .length:

arr.length = 99; 

Se ora si aggiunge un nuovo elemento utilizzando arr.push(), otterrà l'indice 100 e la lunghezza crescerà. Ogni volta che si aggiunge un elemento all'array tramite un indice, viene verificato se arr.length è più piccolo dell'indice e aggiornato di conseguenza. Ma non diventa più piccolo.

Quindi, in effetti, ciò che sta facendo var arr = new Array(5) consiste nell'impostare la lunghezza dell'array su 5. Nient'altro.


Per ulteriori informazioni sulla creazione e riempire gli array, vi suggerisco di leggere su di esso nel MDC JavaScript Guide.

Problemi correlati