So baue ich ein Programm in JavaScript und ich brauche für Werte innerhalb eines mehrdimensionalen Wörterbuch wie folgt zu:Binäre Suche im mehrdimensionalen Wörterbuch?
var myDict = {
apple: {name: 'apple 1', age: 14},
bear: {name: 'apple 1', age: 14},
cup: {name: 'apple 1', age: 14},
deer: {name: 'apple 1', age: 14},
dog: {name: 'apple 1', age: 14},
elephant: {name: 'apple 1', age: 14},
flower: {name: 'apple 1', age: 14},
frog: {name: 'apple 1', age: 14},
gary: {name: 'apple 1', age: 14}
};
var searchValue = 'flower';
Ursprünglich ich einen linearen Suchalgorithmus zu implementieren, würde aber das Wörterbuch wird Hunderte bis Tausende halten von Werten im Inneren. Stellen Sie sich vor, das Wörterbuch über ^^ hat vielleicht 1200 Schlüssel-Wert-Paare und der Wert für jede Taste ist ein anderes Wörterbuch. Ich bin mir nicht sicher, wie man dafür einen Suchalgorithmus erstellt. Hier ist der Code, den ich bisher für ein Array haben:
var myArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
function binarySearch(inputArr, searchVal) {
var first = 0;
var final = inputArr.length - 1;
var middleIndex = parseInt((first + final)/2); // i used parse int because if the array is an even number i dont get like 5.5 which will create an infinite loop
var middleValue = inputArr[middleIndex];
while(first < final) {
// if its the first value/index
if (searchVal == inputArr[first]) {
return first;
}
// if its the last value/index
if (searchVal == inputArr[final]) {
return final;
}
// if its the middle value/index
if (searchVal == middleValue) {
return middleIndex;
}
// if value/index is lower
if (searchVal < inputArr[middleIndex]) {
first += 1;
}
// if value/index is higher
if (searchVal > inputArr[middleIndex]) {
final -= 1;
}
}
return 'value does not exist';
}
binarySearch(lettArr, 7);
aber ich brauche diesen Suchalgorithmus den Index der passenden Suchwert zurückzukehren. Irgendwelche Lösungen für dieses Problem? Wenn ich laufen:
binarySearch(myDict, 'flower'); // outputs undefined
Das klingt verwirrend, weil im nicht sicher, wie dies zu erklären, aber hoffentlich meinen Code hilft. Auf der hellen Seite, wenn Sie das lösen, werden Sie einen neuen Algorithmus erstellen. Da die binäre Suche für Arrays ist, wird diese für mehrdimensionale Wörterbücher verwendet, so dass etwas auf einen Lebenslauf gelegt werden kann. :)
was ist das erwartete Ergebnis? Hinweis: Verwenden Sie den Suchwert als Schlüssel. –
der erwartete Wert ist der Index des passenden Suchwertschlüssels – Jeebs600
tatsächlich sehe ich keinen * index * im Objekt. –