2011-07-21 14 views
16

chcę do przechowywania informacji takich jak:Czy istnieje jakaś struktura pary klucz/wartość w JavaScript?

Pseudo-Code

array(manager) = {"Prateek","Rudresh","Prashant"}; 
array(employee) = {"namit","amit","sushil"}; 
array(hr) = {"priya","seema","nakul"}; 

Jakie struktury danych można użyć?

+0

Nie jestem pewien czy naśladowania, dlaczego nie można użyć tablicę javascript jak: var managers = ["Prateek", "Rudresh", "Prashant"]; ? – brendan

Odpowiedz

34

Można użyć arrays do listy danych przechowywania; i objects na klucz-wartość


w was sprawy, którą prawdopodobnie używać zarówno:

var data = { 
    'manager': ["Prateek","Rudresh","Prashant"], 
    'employee': ["namit","amit","sushil"], 
    'hr': ["priya","seema","nakul"] 
}; 

Tutaj data jest obiektem; który zawiera trzy tablice.

13

Obiekt:

var myobj = { 
    "manager": ["Prateek","Rudresh","Prashant"], 
    "employee": ["namit","amit","sushil"], 
    "hr": ["priya","seema","nakul"] 
} 

alert(myobj['employee'][1]); // Outputs "amit" 
+0

Tak, myślę, że szukałem tego. –

+0

Czy chodziło Ci o '{" Prateek "," Rudresh "," Prashant "}' by być tablicą? – jfriend00

+0

@ jfriend00 Tak, myślę, że on chce używać ich jako tablic. – Paulpro

2

Tak jest:

var theArray = {}; 
theArray["manager"] = ["Prateek","Rudresh","Prashant"]; 
theArray["employee"] = ["namit","amit","sushil"]; 
theArray["hr"] = ["priya","seema","nakul"]; 
+1

To nie jest poprawne, każdy obiekt jest tą strukturą. Twój przykład działa, ponieważ tablica jest tylko obiektem. –

+0

@Emil Ivanov: To jest całkowicie poprawne, tworzy dwuwymiarową tablicę.proszę wyjaśnij, która część jest niepoprawna. – Ibu

+1

Tablice w JavaScript można indeksować tylko przez liczbę. Indeksowanie ich za pomocą ciągu jest możliwe, ponieważ dowolny obiekt w js może być indeksowany przez ciąg znaków. –

-1

Nawet można używać rzeczy jak poniżej: -

var obj = new Object(); 

obj.name = 'Jatin'; 
obj.place = 'Delhi'; 
10

normalnego obiektu zrobi:

var a = { 
    key1: "value1", 
    key2: ["value2.1","value2.2"] 
    /*etc*/ 
} 

dostępu z:

a.key1 
a["key1"] 
2

Lub użyj JSON w ten sposób. Niewielka zmiana twojego pseudokodu, ale będzie dostępna i rozszerzalna.

var Person = [ 
{ 
    "name": "Prateek", 
    "position": "manager"}, 
{ 
    "name": "James", 
    "position": "employee"} 

]; 
6

można przechowywać je w tablicy obiektów:

var Staff = [ 
     { name: 'Prateek', role: manager }, 
     { name: 'Rudresh', role: manager }, 
     { name: 'Prashant', role: manager }, 
     { name: 'Namit', role: employee }, 
     { name: 'Amit', role: employee }, 
     { name: 'Sushil', role: employee }, 
     { name: 'Priya', role: hr }, 
     { name: 'Seema', role: hr }, 
     { name: 'Nakul', role: hr }, 
    ]; 

dodając atrybut ID może być przydatny również w zależności od aplikacji. np.

{ id: 223, name: 'Prateek', role: manager }, 
3

Z ES2015/ES6 masz typ Map.

używając mapy kod będzie wyglądał

const map = new Map([ 
 
    ['manager', ['Prateek', 'Rudresh', 'Prashant']], 
 
    ['employee', ['namit', 'amit', 'sushil']], 
 
    ['hr', ['priya', 'seema', 'nakul']] 
 
]) 
 

 
console.log(...map.entries())

Aby uzyskać wartości jednostkowej można użyć Map.get('key') metodę

Powiązane problemy