Skip to content

Commit 8b3c7f2

Browse files
authored
Create hashingalgorithm.js
1 parent cedbe13 commit 8b3c7f2

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

hashingalgorithm.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/* Hash Table */
2+
3+
var hash = (string, max) => {
4+
var hash = 0;
5+
for (var i = 0; i < string.length; i++) {
6+
hash += string.charCodeAt(i);
7+
}
8+
return hash % max;
9+
};
10+
11+
let HashTable = function() {
12+
13+
let storage = [];
14+
const storageLimit = 14;
15+
16+
this.print = function() {
17+
console.log(storage)
18+
}
19+
20+
this.add = function(key, value) {
21+
var index = hash(key, storageLimit);
22+
if (storage[index] === undefined) {
23+
storage[index] = [
24+
[key, value]
25+
];
26+
} else {
27+
var inserted = false;
28+
for (var i = 0; i < storage[index].length; i++) {
29+
if (storage[index][i][0] === key) {
30+
storage[index][i][1] = value;
31+
inserted = true;
32+
}
33+
}
34+
if (inserted === false) {
35+
storage[index].push([key, value]);
36+
}
37+
}
38+
};
39+
40+
this.remove = function(key) {
41+
var index = hash(key, storageLimit);
42+
if (storage[index].length === 1 && storage[index][0][0] === key) {
43+
delete storage[index];
44+
} else {
45+
for (var i = 0; i < storage[index].length; i++) {
46+
if (storage[index][i][0] === key) {
47+
delete storage[index][i];
48+
}
49+
}
50+
}
51+
};
52+
53+
this.lookup = function(key) {
54+
var index = hash(key, storageLimit);
55+
if (storage[index] === undefined) {
56+
return undefined;
57+
} else {
58+
for (var i = 0; i < storage[index].length; i++) {
59+
if (storage[index][i][0] === key) {
60+
return storage[index][i][1];
61+
}
62+
}
63+
}
64+
};
65+
66+
};
67+
68+
69+
console.log(hash('liam', 10))
70+
71+
let ht = new HashTable();
72+
ht.add('rey', 'person');
73+
ht.add('tyson', 'dog');
74+
ht.add('guli', 'dinosour');
75+
ht.add('rewavi', 'penguin')
76+
console.log(ht.lookup('tux'))
77+
ht.print();

0 commit comments

Comments
 (0)