确定值是否存在于JavaScript“哈希表”中

时间:2018-11-02 23:39:57

标签: javascript arrays object hash

我已经构建了一个充当哈希表的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 :(得分:2)

Array.includes()是一种数组方法。由于您的哈希表基于对象,因此不支持此方法。

如果您的值不是虚假的(false,undefined,null,0,NaN),则可以使用逻辑short-circuit evaluation来分配值:

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

如果它们可能是虚假的,则可以使用in operator来检查它们是否存在于对象中:

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
}