2013-07-14 14 views
43

mam ten obiekt:uzyskać wartości z obiektu w JavaScript

var data = {"id": 1, "second": "abcd"}; 

Są to wartości z formularza. Przekazuję to funkcji do weryfikacji.

Jeśli powyższe właściwości istnieją, możemy uzyskać ich wartości z data["id"] i data["second"], ale czasami, w oparciu o inne wartości, właściwości mogą się różnić.

Jak uzyskać wartości od data niezależnie od nazw właściwości?

+4

To jest _Object_, a nie _Array_. –

+1

Po pierwsze, to nie jest tablica. Po drugie, to, co nazywasz "indeksem", zwykle nazywa się nazwą lub kluczem właściwości. Nie ma sposobu, aby uzyskać wartość, z wyjątkiem właściwości. Chociaż dowolne wyrażenie może być umieszczone wewnątrz '[]', a jego wartość zwracana będzie używana jako nazwa właściwości. –

+0

Przepraszam ................. –

Odpowiedz

56

Aby uzyskać dostęp do właściwości obiektu nie znając nazwiska tych właściwości można użyć for ... in pętlę:

for(key in data) { 
    if(data.hasOwnProperty(key)) { 
     var value = data[key]; 
     //do something with value; 
    } 
} 
+3

Nie zapomnij sprawdzić 'hasOwnProperty' –

+0

@PaulS. Dzięki za przypomnienie :) Zaktualizowano odpowiedź – cfs

+3

Pozostaw test '' hasOwnProperty'. Nie rozpowszechniajmy użycia niepotrzebnych strażników. To zła praktyka. –

5

przykro mi, że zawieranie pytanie nie jest jasne, ale mylisz się z bardzo Pierwsza linia. Dane zmienna jest Object a nie Array

Aby uzyskać dostęp do atrybutów obiektu jest dość proste:

alert(data.second); 

Ale jeśli to nie całkowicie odpowiedzieć na pytanie, proszę wyjaśnij to i odeślij.

Dzięki!

-12

użycie

console.log (zmienna)

a jeśli używasz Google Chrome konsolę otwarty za pomocą Ctrl + Shift + J

Goto >> Console

40

Jeśli chcesz zrób to w jednym wierszu, spróbuj:

Object.keys(a).map(function(key){return a[key]}) 
+6

Może być użyteczne wskazanie, że Object.keys() zostało wprowadzone w ECMA5, wspierane przez IE9 +. – Soulriser

8

Jeśli jesteś $ definiuje następnie można iteracyjne

var data={"id" : 1, "second" : "abcd"}; 
$.each(data, function() { 
    var key = Object.keys(this)[0]; 
    var value = this[key]; 
    //do something with value; 
}); 

można uzyskać do niego dostęp, wykonując sposób Jeśli znasz wartości kluczy

data.id 

lub

data["id"] 
+0

To działa dla mnie ... Dzięki –

24

W ES2017 można użyć Object.values():

Object.values(data) 

W czasie pisania wsparcia jest ograniczona (FireFox i Chrome). Wszystkie główne przeglądarki z wyjątkiem IE obsługują to teraz.

W ES2015 można użyć to:

Object.keys(data).map(k => data[k]) 
1

Korzystanie lodash_.values(object)

_.values({"id": 1, "second": "abcd"}) 

[ 1, 'abcd' ] 

lodash zawiera całą masę innych funkcji do pracy z tablicami, obiekty, zbiory, ciągi, a bardziej, że ty życzenie zostały wbudowane w JavaScript (i wydaje się, że powoli wprowadzają się do tego języka).

Powiązane problemy