2016-07-01 12 views
0

Ich habe ein Objekt mit Arrays, die ich nur einen ausgewählten Teil zurückgeben möchte. underscore.js ist installiert und erwartet, dass es die Tools zur Verfügung stellt, die ich brauche.Zugriff auf Array-Eigenschaft auf Objekt

Hier ist das Objekt makes.

{ 2011: [ "Chevy", "Ford" ], 2012: [ "Chevy", "Ford", "GMC", "Hyundai" ] } 

Ich habe dies versucht und es gibt ein leeres Array zurück.

chyear = 2012; 
var makesbyyear = _.toArray(makes.chyear); 
+2

Um die Referenz 'var makesbyyear zu erhalten = macht [chyear];' oder für neues Array 'var makesbyyear = macht [chyear] .slice();' –

+0

chyear kein Parameter von Marken ist. Sie müssten stattdessen make [chyear] verwenden und stattdessen chyear auf text setzen. chyear = '2012'; – ManoDestra

+0

Werfen Sie einen Blick auf Unterstrich [Pick] (http://underscorejs.org/#pick), die nützlich sein kann, wenn Sie mehr als ein Jahr zur gleichen Zeit z. '_.pick (Daten, '2012')' oder '_.pick (Daten, '2012,' 2013 ')' –

Antwort

0

einfach die erforderliche Eigenschaft extrahieren, als wäre es ein Index.

chyear = 2012; 
var makesbyyear = makes[chyear]; 

In JavaScript haben Objekte Eigenschaften. Eine Eigenschaft ist eine Art Variable innerhalb des Objekts. Eigenschaften ähneln also einfachen Variablen, sind jedoch angehängt, so dass Sie über ihr "Container" -Objekt darauf zugreifen müssen.

Normalerweise greifen Sie auf die Eigenschaften eines Objekts eine Punktnotation mit

object.property 

Aber Eigenschaften können auch eine Klammer-Notation zugegriffen werden, wie Indizes eines Arrays. Aus diesem Grund werden Objekte manchmal auch als assoziative Arrays bezeichnet, da jede Eigenschaft mit einem Indexwert austauschbar ist.

object["property"] 
+0

chyear sollte wahrscheinlich auch Text sein, anstatt eine Zahl. Die Konvertierung mag zwar explizit sein, aber es ist erwähnenswert, da es sich um einen Parameternamen handelt :) – ManoDestra

+0

Tatsächlich sind Objekte ** nicht ** als assoziative Arrays bekannt.Das ist ein Begriff, der in anderen Sprachen verwendet wird, nicht in JavaScript. –

+0

@todazaburo Objekte verwendet (oder missbraucht) über Indizes, sind * manchmal * auch in Javascript assoziativen Arrays aufgerufen. –