😂
비어있는 array에 push 함수 작동이 안됨
이런 경우
이런 방법으로 하면 되는것을 알수있따.
😅개념
js 의 object 형식의 key value 구조가 없다고 생각하는
구조이다.
따라서 key 나 value 를
배열 형식으로 만들어서 새로운 배열에 넣어서
뽑아내는 방식이다.
class hash {
constructor(size = 4) {
this.keymap = new Array(size);
}
_hash(key) {
let total = 0;
let WEIRD = 31;
for (let i = 0; i < Math.min(key.length, 100); i++) {
let char = key[i];
let value = char.charCodeAt(0) - 96;
total = (total * WEIRD + value) % this.keymap.length;
}
return total;
}
set(key, value) {
const ind = this._hash(key);
// console.log(ind)
var hey_push = [key, value];
if (!this.keymap[ind]) {
this.keymap[ind] = [];
this.keymap[ind].push(hey_push);
}
else {
this.keymap[ind].push(hey_push);
}
//console.log(this.keymap)
}
get(key, value) {
const ind = this._hash(key);
// console.log(ind)
if (this.keymap[ind].length == 0) {
console.log('여기 업서요 ')
return;
}
else {
var find_arr = this.keymap[ind];
for (var i = 0; i < this.keymap[ind].length; i++) {
if (find_arr[i][1] == value) {
console.log('찾았습니다.')
return;
}
}
console.log('여기 없는데요 ')
}
}
value() {
var value_map = [];
for (var i = 0; i < this.keymap.length; i++) {
var he = this.keymap[i]
if (he) {
for (var ii = 0; ii < he.length; ii++) {
value_map.push(he[ii][1])
}
}
}
console.log(value_map)
}
}
var misu = new hash();
misu.set("first", "hi");
misu.set("second", "apple");
misu.set("third", "bye");
misu.get("third", "bye");
misu.get("dd", "bye");
misu.value()