在哈希 table 上添加元素

Adding elements on a hash table

我正在阅读 Grokking 算法,它给了我一个哈希映射的例子,我无法在 Javascript 上复制它...很简单,我唯一不知道的是如何在“投票”变量上添加 ID 的值

var canVote = function(id) {
  var voted = {};
  for(let i = 0; i < id.length; i++) {
    if(id in voted) {
      console.log("ID already voted!");
    } else {
      voted[id] = id;
      console.log("Voted successufully!")
    }
  }
}

var id = [10, 20, 20]
canVote(id);

散列table的思想是在O(1)中查找一个值是否存在。但是,如果您遍历 n 元素的数组,您显然最终会执行 n 常量操作,这会导致 O(n).

另外,您使用的逻辑在循环迭代中存在缺陷。我在下面的代码中修改了它。请检查。

var canVote = function(id) {
    var voted = {};
    id.forEach(voteId=>{
        if(voted[voteId]){
            console.log("ID already voted!");
        }else{
            voted[voteId] = voteId;
            console.log("Voted successufully!")
        }
    })
}

var id = [10, 20, 20]
canVote(id);