だから私はJavaScriptでプログラムを構築していると私はこのような多次元辞書の内部値を検索する必要があります。多次元辞書のバイナリ検索?
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';
は、もともと私は、線形検索アルゴリズムを実装するつもりだったが、この辞書は数百〜数千を開催します内部の値のだから、^^の辞書がおそらく1200のキーと値のペアを持ち、各キーの値が別の辞書であると想像してください。このための検索アルゴリズムをどのように作成するかわかりません。ここで私はこれまでの配列のコードです:
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);
しかし、私はこの検索アルゴリズムが一致する検索値のインデックスを返す必要があります。この問題の解決策はありますか?実行した場合:
binarySearch(myDict, 'flower'); // outputs undefined
これは説明する方法がわかりませんが、私のコードが役立つので、混乱するかもしれません。明るい側でこれを解決すれば、新しいアルゴリズムを作成します。バイナリ検索は配列のためであり、これは多次元辞書用であり、再開時に何かを置くためのものです。 :)
期待される結果は何ですか?ヒント:seach値をキーとして使用します。 –
期待値は、一致する検索値キー – Jeebs600
のインデックスです。実際には、オブジェクト内に*インデックス*はありません。 –