Wenn Sie ein Objekt mit Array-Werte . Hier ist ein gutes Beispiel. Nehmen wir an, Sie möchten ein Symbol anzeigen, das auf der Erweiterung der Datei basiert, die Sie haben. Alle Erweiterungen mit demselben Symbol werden unter demselben Objektwert angezeigt.
Hinweis: Es ist besser, die Fälle hier in ein Objekt zu verpacken, als einen Schalter mit vielen Fällen zu verwenden.
Sehen Sie sich den folgenden Codeausschnitt an (geschrieben in es6 ), um zu sehen, wie wir den spezifischen Schlüssel für die spezifische Erweiterung zurückgeben.
Ich habe die Liste der Erweiterungen von dieser Seite Trottelpaket
// Oject that contains different icons for different extentions
const icons = {
"music": ["mp3", "m4a", "ogg", "acc", "flac","m3u", "wav"],
"video": ["mp4","webm", "mkv", "avi", "mov", "m4v", "mpeg"],
"image": ["jpg", "gif", "png", "jpeg", "tif", "psd", "raw", "ico"],
"archives": ["zip", "rar", "tar", "dmg", "jar"],
"3d-files": ["3ds", "dwg", "obj", "dae", "skp", "fbx"],
"text": ["doc", "rtf", "txt", "odt", "tex"],
"vector-graphics":["ai", "svg"],
"pdf": ["pdf"],
"data": ["xml", "csv", "xls"]
}
const get_icon_Key =( icons_object,file_extention) => {
// For each key we chack if the value is contained in the list of values
let key = Object.keys(icons_object).find(
k=> icons[k].find(
// At this leve we check if the extention exist in the array of the specific object value ie. 'music', 'video' ...
icons_ext => icons_ext === file_extention)
// if we find it means this is the key we are looking for
? true: false);
return key
}
console.log(`The icon of for mp3 extention is: => ${get_icon_Key(icons,"mp3")}`)
console.log(`The icon of for mp4 extention is: => ${get_icon_Key(icons,"mp4")}`)
0 Stimmen
Es gibt keine Standardfunktion für diese Aufgabe. Wenn die Zuordnung wirklich bidirektional ist, ist es trivial, eine "umgekehrte" Zuordnung zu konstruieren und diese zu indizieren. Andernfalls eine einfache Eigenschaft-Iterator (mit einem hasOwnProperty gaurd, vielleicht) und eine frühe Rückgabe versteckt innerhalb einer Funktion tut gerade schön...
0 Stimmen
Wie könnte das funktionieren, wenn ein Objekt von mehr als einem Schlüssel referenziert wird?
var o = []; var map = {first: o, second: o}
. Was würdefind_key(o)
zurückkehren?5 Stimmen
Spielt keine Rolle ;) Ich wollte es nur für ein Array mit eindeutigen Schlüssel-Wert-Paaren verwenden.
0 Stimmen
Mögliches Duplikat von beste Weg, um den Schlüssel eines Schlüssel/Wert-Javascript-Objekt zu erhalten
1 Stimmen
Ich habe eine Version ohne Iteration erstellt stackoverflow.com/a/36705765/696535 . Es wäre interessant, alle vorgeschlagenen Lösungen in jsfiddle zu testen