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;
        }
    };
js实现hash的更多相关文章
- js生成hash序列
		炒鸡简单的js生成hash序列的方法.如下: function createHash (hashLength) { if (!hashLength || typeof(Number(hashLengt ... 
- js中hash、hashchange事件
		1.hash即URL中"#"字符后面的部分. ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置: ②hash还有另 ... 
- js 定义hash类
		// JavaScript Documentfunction HashTable(){ this._hash={}; this._count=0; /** *添 ... 
- Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案
		文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Web ... 
- rsa && sha1 js code
		jsbn.js /* * Copyright (c) 2003-2005 Tom Wu * All Rights Reserved. * * Permission is hereby granted, ... 
- webpack多页面开发与懒加载hash解决方案
		之前讨论了webpack的hash与chunkhash的区别以及各自的应用场景,如果是常规单页面应用的话,上篇文章提供的方案是没有问题的.但是前端项目复杂多变,应对复杂多页面项目时,我们不得不继续踩w ... 
- Gulp:静态资源(css,js)版本控制
		为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源: 然后涉及到的html模板里的src也要做相应的修改,静态资源需要优化(压缩合并) 文件目录 ... 
- How to use Request js (Node js Module) pools
		Can someone explain how to use the request.js pool hash? The github notes say this about pools: pool ... 
- webpack3中文版使用参考文档--全面解析webpack.config.js
		Webpack目前官方发布的最新版本是3.1.0,相对于2.0的怎么本,在语法上没有变动,只是新增了功能.使用webpack,需要事先安装node.js,并对node.js生态有一些基本的了解,比如( ... 
随机推荐
- Android性能优化方法(八)
			Android SDK tools目录下提供一个观察布局的工具,层级观察器(Hierarchy Viewer).Hierarchy Viewer工具是一个非常好的布局优化工具,同时,你也可以通过它学习 ... 
- JSONP跨域数据调用
			引自:http://kb.cnblogs.com/page/139725/ Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有”src”这个属性的标签都拥有跨域的能力,比如& ... 
- 嵌入式linux自动登录
			最近又把同事的fl2440板子拿过来跑了起来,没有太大收获,就解决了一个自动登录的问题: ::respawn:/sbin/getty -L ttySAC0 115200 vt100 -n root - ... 
- iOS push过去的时候界面不能完全退出
			iOS push过去的时候界面不能完全退出 解决方法:设置self.view.backgroundcolor 1. initWithFrame方法是什么? initWithFrame方法用来初始化并 ... 
- don't forget the bigger picture
			Imagine a circle that contains all of human knowledge: By the time you finish elementary school, you ... 
- php乱码
			1:php 编码是utf-8 但是接口需要是gbk 这么办?? $message = "你的微点管理地址为:".$shortUrl." [请保存信息]"; // ... 
- PHP访问数据库
			1.原生mysql方式 <?php //最原生态的访问方式,不过SQL注入是个麻烦事 $con = mysql_connect("localhost","root& ... 
- Unity3D DF根据名称获取多个子控件代码
			dfPanel control = gameObject.GetComponent<dfPanel>(); dfLabel avatarName = control.Find<dfL ... 
- 理解assign,copy,retain变strong
			举个例子: NSString *houseOfMM = [[NSString alloc] initWithString:'装梵几的三室两厅']; 上面一段代码会执行以下两个动作: 1 在堆上分配一 ... 
- SignalR 简单示例
			一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ... 
