js实现hash


由于项目中用到了hash,自己实现了一个。

Hash = function () {
    }
    Hash.prototype = {
        constructor: Hash,
        add: function (k, v) {
            if (!this.hasOwnProperty(k)) {
                this[k] = v;
            }
        },
        remove: function (k) {
            if (this.hasOwnProperty(k)) {
                delete this[k];
            }
        },
        update: function (k, v) {
            this[k] = v;
        },
        has: function (k) {
            var type = typeof k;
            if (type === 'string' || type === 'number') {
                return this.hasOwnProperty(k);
            } else if (type === 'function' && this.some(k)) {
                return true;
            }
            return false;
        },
        clear: function () {
            for (var k in this) {
                if (this.hasOwnProperty(k)) {
                    delete this[k];
                }
            }
        },
        empty: function () {
            for (var k in this) {
                if (this.hasOwnProperty(k)) {
                    return false;
                }
            }
            return true;
        },
        each: function (fn) {
            for (var k in this) {
                if (this.hasOwnProperty(k)) {
                    fn.call(this, this[k], k, this);
                }
            }
        },
        map: function (fn) {
            var hash = new Hash;
            for (var k in this) {
                if (this.hasOwnProperty(k)) {
                    hash.add(k, fn.call(this, this[k], k, this));
                }
            }
            return hash;
        },
        filter: function (fn) {
            var hash = new Hash;
            for (var k in this) {

            }
        },
        join: function (split) {
            split = split !== undefined ? split : ',';
            var rst = [];
            this.each(function (v) {
                rst.push(v);
            });
            return rst.join(split);
        },
        every: function (fn) {
            for (var k in this) {
                if (this.hasOwnProperty(k)) {
                    if (!fn.call(this, this[k], k, this)) {
                        return false;
                    }
                }
            }
            return true;
        },
        some: function (fn) {
            for (var k in this) {
                if (this.hasOwnProperty(k)) {
                    if (fn.call(this, this[k], k, this)) {
                        return true;
                    }
                }
            }
            return false;
        },
        find: function (k) {
            var type = typeof k;
            if (type === 'string' || type === 'number' && this.has(k)) {
                return this[k];
            } else if (type === 'function') {
                for (var _k in this) {
                    if (this.hasOwnProperty(_k) && k.call(this, this[_k], _k, this)) {
                        return this[_k];
                    }
                }
            }
            return null;
        }
    };

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM