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;
            }
        };
  • 相关阅读:
    【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
    读取Webpage表中的内容
    各种排序算法的分析及java实现
    运行一个Hadoop Job所需要指定的属性
    Hbase常见异常
    Gora官方文档之二:Gora对Map-Reduce的支持
    Linux 系统挂载数据盘
    Gora快速入门
    Gora官方范例
    在Eclipse中运行Nutch2.3
  • 原文地址:https://www.cnblogs.com/pigtail/p/3700989.html
Copyright © 2011-2022 走看看