2016-09-19 2 views
-4

Ich habe diese js Ausgabejs versucht Objekt zuzugreifen Array gibt ich undefined

enter image description here

Ich versuche, das erste Mitglied des Models Array mit diesem Ansatz zuzugreifen:

console.log(data.ModelState[0]); 

Aber ich bekomme einen undefinierten Fehler.

Auch beim Versuch, Alert (data.ModelState) zu tun, bekomme ich Object-Objekt.

Eine Idee, wie kann ich auf den ersten Wert im ModelState-Array zugreifen? Danke

+1

ich glaube, dass ein Objekt, das eine hat leere Taste (oder vielleicht Leerzeichen?), die ein Array als Wert hat. Sie brauchen also etwas wie 'data.ModelState [" "] [0]' – vlaz

+0

In welchem ​​Browser testen Sie dies? @Laziale –

+0

@RanojitBanerjee das ist Firefox. Genauer gesagt, die Firebug-Erweiterung. – vlaz

Antwort

0

Ich habe den Eindruck, dass Ihre Daten ein Array enthalten, das einen Leerzeichen- oder Leerzeichenschlüssel enthält. So ist es am meisten sieht wahrscheinlich so aus

{ 
    ModelState: { 
     "": [ "string1", "string2" ] 
    } 
} 

Sie müssten für den Zugriff über den Schlüssel dort, so lange wie Sie wissen, was es ist, zum Beispiel data.ModelState[""][1] //"string1"

Es gibt auch Alternativen, wenn Sie nicht sicher sind, was sie Schlüssel wäre oder einen weniger spröden Code wollen:

var data = { 
 
    ModelState: { 
 
    "": [ "string1", "string2" ] 
 
    } 
 
}; 
 

 
console.log("--Using Object.keys--") 
 
Object.keys(data.ModelState).forEach(function(key) { 
 
    console.log(data.ModelState[key]); 
 
}) 
 

 
console.log("--Using for...in loop--") 
 
for (var key in data.ModelState) { 
 
    console.log(data.ModelState[key]); 
 
}

0

Sie müssten darauf zugreifen mit data.ModelState[''][0]. Es scheint, dass Sie ein verschachteltes Array haben, wobei das Element des Arrays, das die zwei Strings enthält, eine leere oder nur Leerzeichen enthaltende Zeichenfolge für einen Index hat.

0

[object Object] ist Ihr erster Hinweis dort - obwohl ich Ihr genaues Problem nicht reproduzieren kann, sieht es aus wie das Objekt, von dem Sie denken, dass ein Array tatsächlich eine JavaScript Object ist, die eine andere Datenstruktur ist. JS-Objekte sind Objekten aus anderen objektorientierten Sprachen ziemlich ähnlich. Ihre String-Darstellung ist, wie Sie bemerkt haben, unabhängig von ihrem Inhalt [object Object]].

> String({}) 
< "[object Object]" 
> String({abc: "foo", def: "bar"}) 
< "[object Object]" 

Wenn Sie Ihre Frage mit den Schritten auf aktualisieren, wie es zu reproduzieren, ich mehr helfen kann, aber ich hoffe, dass genug ist, Sie auf dem richtigen Weg zu bekommen!

Verwandte Themen