[자료구조]hash

김린네·2022년 4월 27일

😂
비어있는 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()
profile
디자인 > https://dribbble.com/jongpil_77 코딩 > https://www.codewars.com/users/bikijjang

0개의 댓글