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;
        }
    };
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值