首页 > 解决方案 > 构建一个哈希表来存储客户名称 - Javascript

问题描述

建立一个系统,允许销售助理将客户的姓名、地址和电话号码输入系统,并使用他们的电话号码查找客户。将此信息存储在哈希表中。

const hashTable = () => {
   this.customer = name;
   this.address  = address;
   this.number   = number;
} 

我想我不理解哈希表,它们类似于对象但它们可以保存任何数据类型?

标签: javascriptlinked-list

解决方案


考虑到您将客户数据存储在如下对象中:

customerData = {
  customer : 'John Smith',
  address : '1 Way ...',
  number : '0604....',
} 

如果您只是想要一种简单的方法来存储客户并使用他的号码查找客户,您可以使用一个对象:

const hashTable = {}

const addCustomer = customerData => {
  hashTable[customerData.number] = customerData
}

const searchCustomer = customerNumber => {
  return hashTable[customerNumber]
}

const removeCustomer = customerNumber => {
  hashTable[customerNumber] = null
}

生成的对象将类似于:

hashTable = {
  '0604....' : {
    customer : 'John Smith',
    address : '1 Way ...',
    number : '0604....',
  },
  '0702....' : {
    customer : 'Michel Doe',
    address : '2 Street ...',
    number : '0702....',
  },
}

这里的权衡是:

  • 您不能拥有多个具有相同编号的客户,hashTable[customerNumber]只能“持有”一个客户的参考。但是为什么两个客户会有相同的号码......
  • 也许您不想要数字的冗余:在此实现中,数字是关键,并且还存储在客户数据的每个引用中。顺便说一句,如果您没有数十万客户,这是一个小问题。
  • 如果您再次与数十万客户合作,其他非常小的性能和内存问题

推荐阅读