In meinem Code, beschäftige ich mich mit einer Reihe, die einige Einträge mit vielen Objekten verschachtelt innerhalb eines hat einen anderen, wo, wie manche nicht. Es sieht etwa wie folgt:Wie zu vermeiden, kann nicht Eigenschaft von undefinierten Fehlern lesen?
// where this array is hundreds of entries long, with a mix
// of the two examples given
var test = [{'a':{'b':{'c':"foo"}}}, {'a': "bar"}];
Das ist mir Probleme geben, weil ich manchmal durch das Array zu durchlaufen müssen, und die Inkonsistenz wirft mir Fehler wie so:
for (i=0; i<test.length; i++) {
// ok on i==0, but 'cannot read property of undefined' on i==1
console.log(a.b.c);
}
Ich bin mir bewusst, dass ich if(a.b){ console.log(a.b.c)}
sagen, aber das ist außerordentlich mühsam in Fällen, in denen bis zu 5 oder 6 Objekten sind ineinander verschachtelt. Gibt es eine andere (einfacher) Art und Weise, dass ich es kann nur die console.log tun, wenn es existiert, aber ohne einen Fehler zu werfen?
Der Fehler ist wahrscheinlich eine regelmäßige Ausnahme Javascript, so versuchen, die 'try..catch' Aussage. Das heißt, ein Array, das wild heterogene Elemente enthält, sieht für mich wie ein Designproblem aus. – millimoose
Wenn Ihre Struktur in den Elementen nicht konsistent ist, was stimmt dann nicht mit der Existenzprüfung? Eigentlich würde ich 'if (" b "in einem &&" c "in a.b)' verwenden. Es kann "langweilig" sein, aber das ist, was Sie für Inkonsistenz bekommen ... normale Logik. – Ian
Warum würden Sie auf nicht vorhandene Eigenschaften zugreifen? Warum wissen Sie nicht, wie die Objekte aussehen? – Bergi