Es gibt ein bestimmtes Objekt, das ich habe, wo der genaue Fall der Eigenschaften nicht vorher bekannt ist. Ein Eigenschaftenname könnte beispielsweise "AbC" oder "Abc" oder "abc" usw. sein.Gibt es eine effiziente Möglichkeit, eine JavaScript-Objekteigenschaftsnamensuche nach Groß- und Kleinschreibung durchzuführen?
Ich weiß jedoch, dass nur einer existiert. Das ist ich weiß, dass es sowohl eine Eigenschaft "AbC" und auch eine Eigenschaft "abc" sein kann.
Der Eigenschaftsname selbst unterscheidet zwischen Groß- und Kleinschreibung. Also, wenn es als TheObject.Abc gespeichert ist und ich nach TheObject.abc suche, finde ich die Eigenschaft nicht.
In meinem Objekt könnte es 1000 solcher Eigenschaften geben.
Es wäre möglich, aber ineffizient, wenn jedes Mal, wenn ich wollte einen Nachschlag ich den Klein Wert der Immobilie im Vergleich zu tun, ich habe gegen den Klein Wert der Eigenschaftsnamen finden möchten, wie folgt aus:
propertyName = inputValue.toLowerCase();
for (var i in theObject) {
if (propertyName == i.toLowerCase()); // found a matching property name
}
Kennt jemand eine klügere Art, dies zu tun?
Aus Gründen, die zu lange dauern würden, kann ich das Objekt nicht einfach neu erstellen und alle Eigenschaften in Kleinbuchstaben umwandeln. Ich weiß, wenn das möglich war, konnte ich nur
theObject['inputValue'.toLowerCase()]
direkt finden. Aber wie gesagt, ich kann nicht. Die Eigenschaftennamen im Objekt sind wie sie sind und sie können nicht geändert werden. Fragt mich, warum wäre eine große Abschweifung von dem Problem zur Hand. Bitte nehmen Sie mein Wort dafür, dass TheObject mit den Eigenschaftsnamen fest ist, die es hat.
Kennt jemand eine effiziente Möglichkeit, eine Suche nach Groß-/Kleinschreibung in einem solchen Fall durchzuführen?
Sie könnten optimiere wahrscheinlich die if-Anweisung, indem ich zuerst die Länge der Strings vergleiche. Sie können eine Karte auch zwischenspeichern, wenn sie sich nicht ändert. Ansonsten denke ich nicht. –
'propertyName = inputValue.toLowerCase(); if (Object.keys (das Objekt).map (function (v) {return v.toLowerCase();}). indexOf (propertyName)> - 1) {// .....} ' –
Dies verwendet Regex und führt Schleifen durch die Schlüssel. http://stackoverflow.com/a/6223307/548568 – blessenm