zoukankan      html  css  js  c++  java
  • 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;
            }
        };
  • 相关阅读:
    【Language】 TIOBE Programming Community Index for February 2013
    【diary】good health, good code
    【web】a little bug of cnblog
    【Git】git bush 常用命令
    【web】Baidu zone ,let the world know you
    【diary】help others ,help yourself ,coding is happiness
    【Git】Chinese messy code in widows git log
    【windows】add some font into computer
    SqlServer启动参数配置
    关于sqlserver中xml数据的操作
  • 原文地址:https://www.cnblogs.com/pigtail/p/3700989.html
Copyright © 2011-2022 走看看