haxibiao
This commit is contained in:
63
src/main.js
63
src/main.js
@@ -73,3 +73,66 @@ export function ExecDatabase(num) {
|
||||
})
|
||||
}
|
||||
// end--->
|
||||
|
||||
// 哈希表
|
||||
export function HashTable() {
|
||||
let size = 0
|
||||
// eslint-disable-next-line no-new-object
|
||||
let entry = new Object()
|
||||
this.add = function(key, value) {
|
||||
if (!this.containsKey(key)) {
|
||||
size++
|
||||
}
|
||||
entry[key] = value
|
||||
}
|
||||
this.getValue = function(key) {
|
||||
return this.containsKey(key) ? entry[key] : null
|
||||
}
|
||||
this.remove = function(key) {
|
||||
if (this.containsKey(key) && (delete entry[key])) {
|
||||
size--
|
||||
}
|
||||
}
|
||||
this.containsKey = function(key) {
|
||||
return (key in entry)
|
||||
}
|
||||
this.containsValue = function(value) {
|
||||
for (const prop in entry) {
|
||||
if (entry[prop] === value) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
this.getValues = function() {
|
||||
// eslint-disable-next-line no-array-constructor
|
||||
const values = new Array()
|
||||
for (const prop in entry) {
|
||||
values.push(entry[prop])
|
||||
}
|
||||
return values
|
||||
}
|
||||
// this.getKey = function(value) {
|
||||
// for (const prop in entry) {
|
||||
// if (entry[key]) {
|
||||
// return prop
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
this.getKeys = function() {
|
||||
// eslint-disable-next-line no-array-constructor
|
||||
const keys = new Array()
|
||||
for (const prop in entry) {
|
||||
keys.push(prop)
|
||||
}
|
||||
return keys
|
||||
}
|
||||
this.getSize = function() {
|
||||
return size
|
||||
}
|
||||
this.clear = function() {
|
||||
size = 0
|
||||
// eslint-disable-next-line no-new-object
|
||||
entry = new Object()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user