2011-06-03 15 views
5

W JavaScript, jeśli ustawisz tablicę na rozmiar 5 (var foo = new Array(5);), czy jest to tylko rozmiar początkowy? Czy możesz rozwinąć liczbę elementów po ich utworzeniu. Czy można zrobić coś takiego - arr = new Array(), a następnie po prostu przypisać elementy jeden po drugim? Z góry dzięki :-)Jak działają rozmiary tablic w JavaScript

Odpowiedz

5

Tak jest to tylko początkowy rozmiar, a to nie jest wymagane. Jeśli nie użyjesz jednego numeru, możesz go natychmiast wypełnić.

Powszechniejsze jest również stosowanie prostszej składni [].

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

Można ustawić (lub wymienić) konkretnego indeksu przez korzystających nawiasach:

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

można dodać na końcu za pomocą przycisku:

arr.push('add me'); 

nie może być szybsza wydajność w niektórych przeglądarkach, jeśli robisz to w ten sposób:

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

Możesz dodać coś w dowolnym indeksie.

można usunąć element całkowicie za pomocą spawów

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

Czy [] jest jak anonimowa tablica? – rubixibuc

+0

@rubixibuc: Nie, jest to literka tablicowa. –

+0

Jaka jest różnica między tablicą literalną a anonimową? (sry, jeśli to głupie pytanie: - /) – rubixibuc

5

Kiedy dać nową tablicę wyraźny wielkości w javascript (przy użyciu new Array(5)), należy wypełnić każdy indeks o wartości undefined. Powszechnie uważa się lepszą praktykę instancji przy użyciu tablicy dosłownego [] wyrażenie:

var arr = []; 

Następnie można wcisnąć nowych elementów za pomocą push()

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

Sprawdź dokumentację Array MDC aby uzyskać więcej informacji: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

+1

Rzeczywiste ly przy pisaniu 'new Array (5)', każdy indeks jest nadal 'niezdefiniowany' (który różni się od' null'). To bardziej przypomina zrobienie 'var arr = []; arr.length = 5; '. –

+0

Ah tak, nieokreślone zamiast zerowe. Poprawi się. –

1

Sprawdź the documentation for Array, ale prosta odpowiedź na to pytanie to tak.

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

Można również użyć literałów tablicowych:

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

Po prostu chciałem podkreślić, że wersja 'new Array (5)' jest ** nie ** identyczna z '[1, 2, 3, 4, 5]'! –

+0

@Felix, masz absolutną rację. Moje dni Java zostały uruchomione. Zaktualizowałem moją odpowiedź. –

2

Tam kilka sposobów, aby zadeklarować i zadane wartości w tablicy.

pierwsze jak to, co chcesz zrobić,

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

Drugim sposobem jest zdefiniowanie im

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

a trzeci jest podobny do drugiego

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

Można również sprawdzić out https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array, aby uzyskać nieco więcej informacji na temat korzystania z tablic, jak również. Możesz użyć funkcji push i pop, jeśli chcesz.

Jeśli używasz jquery lub mootools mają również wbudowane funkcje do wykonywania na tablicach, na przykład http://api.jquery.com/jQuery.each/.

0

Tablice są dynamiczne w JavaScript. Nie musisz inicjować ich z określoną długością. W rzeczywistości należy użyć dosłownego zapisu [] powodu niejednoznaczności w Array konstruktora:

Jeśli zdać tylko jeden parametr do Array będzie ustawić długość tablicy do tego parametru. Jeśli przekażesz więcej niż jeden parametr, elementy te zostaną dodane do tablicy.

W jaki sposób określa się rozmiar tablicy?

Rozmiar tablicy jest najwyższym indeksem +1. Może to być dość mylące. Rozważ to:

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

Można nawet ustawić długość samodzielnie przez przypisanie numeru do .length:

arr.length = 99; 

Jeśli teraz dodać nowy element, używając arr.push() będzie uzyskać indeks 100 i długość wzrośnie. Za każdym razem, gdy dodajesz element do tablicy za pomocą indeksu, testowane jest, czy arr.length jest mniejsze niż indeks i odpowiednio aktualizowane. Ale nie zmniejsza się.

W rzeczywistości to, co robi var arr = new Array(5), ustawia długość tablicy na 5. Nic więcej.


Aby uzyskać więcej informacji na temat tworzenia i wypełniania tablice, proponuję przeczytać o nim w MDC JavaScript Guide.