【问题标题】:Understanding Algorithms in Javasciprt理解 Javascript 中的算法
【发布时间】:2019-11-28 12:45:14
【问题描述】:

我开始学习 Javascript 中的算法,并在其上发现了一个奇怪的结构,称为 hashtable,在底层无法理解。

function findSumBetter(arr, weight) {
    var hashtable = {};

    for (var i = 0; i < arr.length; i++) {
        var currentElement = arr[i],
        difference = weight - currentElement;

        if (hashtable[currentElement] != undefined) {
            return [i, hashtable[currentElement]];
        } else {
            hashtable[difference] = i;
        }
    }

    return -1;
}

console.log(findSumBetter([1,2,3,4,5], 9)); // [4, 3]

【问题讨论】:

  • 谁能解释一下这三件事对对象有什么作用? hashTable[currentElement] , [i, hashtable[currentElement]], hashtable[difference] = i
  • 查看使用对象developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/… 的概述,注意[] 用于访问具有字符串值或变量的属性的不同语法
  • 在这种情况下,术语哈希表只不过是一个对象字面量

标签: javascript arrays hashtable


【解决方案1】:

好的,这是一个简单的例子: 假设你有 JSON 对象

Assigning value 
 1 ) hashtable:{'Test1':90,'test2':45,'test3':60};
 // here Test1,Test2,Test3 are keyes
 2 ) hashtable['test1']=90
Getting value:

 1) hashtable['Test1'] 
 2) hashtable.test1  
Both will return the same result 90 in this example.

--------你的情况-------

 -- condition to check value is there 
  if (hashtable[currentElement] != undefined)
 -- you are assigning value to object
   hashtable[difference] = i;
 -- returning the value from object
   return [i, hashtable[currentElement]]; 

【讨论】:

  • 如果 hashTable[difference] 正在为 hashTable 对象赋值,hashTable[currentElement] 实际上在做什么或评估以完成条件!= undefined??
  • hashTable[currentElement] !- undefined :表示检查某个特定键的值是否存在的条件,如果键存在,则返回值,否则未定义。假设在我上面的例子中 hashtable['test5'] 这将返回未定义的值,因为我们没有被分配任何 'test5' 键给对象。
猜你喜欢
  • 2014-10-19
  • 2020-09-08
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多