javascript - 构建一个哈希表来存储客户名称 - Javascript
问题描述
建立一个系统,允许销售助理将客户的姓名、地址和电话号码输入系统,并使用他们的电话号码查找客户。将此信息存储在哈希表中。
const hashTable = () => {
this.customer = name;
this.address = address;
this.number = number;
}
我想我不理解哈希表,它们类似于对象但它们可以保存任何数据类型?
解决方案
考虑到您将客户数据存储在如下对象中:
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]
只能“持有”一个客户的参考。但是为什么两个客户会有相同的号码...... - 也许您不想要数字的冗余:在此实现中,数字是关键,并且还存储在客户数据的每个引用中。顺便说一句,如果您没有数十万客户,这是一个小问题。
- 如果您再次与数十万客户合作,其他非常小的性能和内存问题
推荐阅读
- javascript - VueJS Secure with Auth0 - 它如何安全?
- c++ - 我可以从 C++17 折叠表达式中解析出单个函数吗
- amazon-s3 - 为 IAM 用户承担角色以从 Jenkins CI 进行 s3 上传
- django - 使用 Django 的多个数据库
- java - 自定义正文错误消息 - Spring Boot REST
- node.js - Sequelize:未处理的拒绝错误:不能同时设置`replacements`和`bind`
- c# - MainWindow 的 MinWidth 属性已绑定但不起作用 - 如何在 MVVM 中完成它并使用设置类?
- igraph - 使用 igraph 重新布线后损坏的图表
- sql - 仅在报告中手动更改员工部门
- reactjs - 如何使用“three-gltf-loader”npm 包制作动画