Определить, существует ли значение в JavaScript "хэш-таблица" - PullRequest
0 голосов
/ 03 ноября 2018

Я создал объект JavaScript, который функционирует как хеш-таблица.

var hashTable = {}; 

Таблица состоит из пар ключ-значение, которые создаются вручную. Таблица будет использоваться для генерации нового значения на основе старого значения или ключа в таблице.

//hashTable['old_value'] = new_value;
hashTable['115004568543'] = 115004567503;
hashTable['115004545983'] = 360000857366;
hashTable['115004723526'] = 360000865566;
hashTable['115004723646'] = 360000865566;

У меня есть другая переменная, которая сравнивается с ключами в хэш-таблице. Если он соответствует ключу в хеш-таблице, его можно использовать для захвата нового сопоставленного ему значения.

Например, допустим, объявлено some_value.

some_value = '115004568543';

Поскольку он соответствует значению ключа (или old_value) в хеш-таблице, я могу получить новое значение, вызвав

var new_value = hashTable[some_value];
// new_value is going to be equal to 115004567503 due to the mapping above

Моя проблема в том, что у меня есть две разные хеш-таблицы, с которыми сравнивается «some_value». Я хочу видеть, присутствует ли первое значение в хеш-таблице либо в первой хеш-таблице, либо во второй хеш-таблице. Так что я работал с:

var hashTable = {};
hashTable['115004568543'] = 115004567503;
hashTable['115004545983'] = 360000857366;

var hashTable2 = {};
hashTable2['115004702483'] = 360000857366;
hashTable2['115004560766'] = 360000857366;

var some_value = '115004545983';

if (hashTable.includes(some_value)) {
    var new_value = hashTable[some_value];
    //Do some other stuff with new_value
}

else if (hashTableTwo.includes(some_value)) {
    var new_value = hashTableTwo[some_value];
    //Do some other stuff with new_value
}

Кроме того, some_value будет существовать в первой хеш-таблице, второй хеш-таблице или не существовать вообще. Он не будет существовать несколько раз.

МОЙ ВОПРОС: Я пытаюсь использовать hashTable.includes (), чтобы увидеть, присутствует ли some_value в одной из двух хеш-таблиц. Это не работает Каков наилучший способ определить, является ли some_value значением в одной из хеш-таблиц?

Когда я пытаюсь вызвать hashTable.includes (some_value), я получаю

Uncaught TypeError: hashTable.includes is not a function

1 Ответ

0 голосов
/ 03 ноября 2018

Array.includes() - это метод массива. Поскольку ваша хеш-таблица основана на объекте, она не поддерживает этот метод.

Если ваши значения не ложные (false, undefined, null, 0, NaN), вы можете использовать логическую оценку короткого замыкания , чтобы присвоить значение:

var new_value = hashTable[some_value] || hashTableTwo[some_value] || some_value;

Если они могут быть ложными, вы можете использовать оператор in , чтобы проверить, существуют ли они в объекте:

if (some_value in hashTable) {
    var new_value = hashTable[some_value];
} else if (some_value in hashTableTwo) {
    var new_value = hashTableTwo[some_value];
    //Do some other stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...