2013-05-20 11 views
5

Czy można ustawić niestandardowy indeks tablicy za pomocą zmiennej.Tablica JavaScript z indeksem zmiennych niestandardowych

np

var indexID = 5; 
var temp = { 
    indexID: new Array() 
}; 

Powyższy przykład przedstawia indeks macierzowym indexID a nie 5. Próbowałem korzystać z cytatów snd =, ale bez żadnego sukcesu.

Thnaks

+1

Tylko dla jasności. ** 'temp' nie jest tablicą. ** – Bart

+0

To nadal nie działa. Działa to: var temp = {5: new Array()}; - ale jeśli podstawię 5 dla zmiennej, to przewyższa to. Próbowałem wszystkich sugerowanych rozwiązań ... –

+0

OK, tak, widzę, że mylę tablice i obiekty. Innymi słowy, próbuję stworzyć tablicę, która ma jako pierwszy indeks numeryczny wartość inną niż 0. Pierwszy indeks w moim przypadku to 5. –

Odpowiedz

12

Tak, wystarczy użyć nawiasów kwadratowych notacji:

var temp = {}; 
temp[indexID] = []; 

zwracać także uwagę na fakt, że temp jest obiektem, a nie tablicą. W JavaScript wszystkie tablice asocjacyjne (lub słowniki) są reprezentowane jako obiekty.

WIĘCEJ:http://www.jibbering.com/faq/faq_notes/square_brackets.html#vId

+0

Dziękuję za pomocne odpowiedzi. Myślę, że to, co próbowałem zrobić, nie było najlepszą praktyką, więc zmieniłem moje podejście i użyłem 0 jako pierwszego indeksu tablicy. Próbowałem podwoić indeks tablicy jako zmiennej, która z perspektywy czasu nie jest praktyczna. –

1

z kodem, można utworzyć obiekt.

Zamiast tego można zrobić

var indexID = 5; 
var temp = []; 
temp[indexID] = []; 
4

myślę to, co chcesz:

var indexID = 5; 
var temp = {}; 
temp[indexID] = "stuff" 
0

Jesteś mieszanie Array z Object. Tablice znają indeks (liczbowy), Obiekty składają się z par klucz-wartość, gdzie klucz może być dowolnym ciągiem znaków.

Nie każdy zgodzi się, bu można przedłużyć Object.prototype

Object.prototype.append = function(key,val){ 
    // confine to Object instances 
    if (this.constructor !== Object && 
     !/object/i.test(this.constructor.prototype)) { return this; } 
    this[key] = val; 
    return this; 
} 

a następnie użyć:

var temp = {}.append(indexID,[]}; 
0

dla projektu węzła-czerwony musiałem dodać Apostrophe nazwy indeksu

var Trend_1={}; 

Trend_1[**'x'**]=Date_TimeArray; 
Powiązane problemy