Wenn Sie das nur einmal machen wollen, dann verwenden Sie eine Funktion wie die von Bobby beschriebene. Wenn Sie dies mehrmals tun wollen, würde ich vorschlagen, eine umgekehrte Zuordnung von Autos zu Herstellern zu erstellen:
var manufacturers = {};
// create a map of car models to manufacturers:
for (var manf in cars) {
/* see note below */
for (var i=0; i<cars[manf].length; i++) {
manufacturers[cars[manf][i]] = manf;
}
}
// Now referencing the manufacturers is
// a very fast hash table lookup away:
var model = 'Accord';
alert(manufacturers[model]);
Hinweis für diejenigen mit juckenden Fingern beim Heruntervoten: Für Objekte, die nichts erben, wie im OP angegeben, ist eine hasOwnProperty-Prüfung hier unnötig. Bei Objekten, die erben, hängt es vom Programmierer ab. Wenn Sie Kompatibilität über Vererbung wollen, dann ist eine hasOwnProperty-Prüfung genau das, was Sie NICHT wollen. Wenn Sie sich nicht um die Vererbung kümmern, dann verwenden Sie eine hasOwnProperty-Prüfung, aber dann würden Sie gar nicht erst vererben, was eine hasOwnProperty-Prüfung unnötig machen würde. In dem seltenen Fall, dass Sie gezwungen sind, das Objekt durch Vererbung zu erstellen, aber die Attribute des Elternteils nicht überprüfen wollen, sollten Sie eine hasOwnProperty-Prüfung durchführen. Wenn Sie natürlich eine Bibliothek wie Prototype.js verwenden, die darauf besteht, das Object-Objekt zu modifizieren, dann tut es mir leid für Sie, weil Sie gezwungen sind, eine hasOwnProperty-Prüfung durchzuführen.