由于项目中用到了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的更多相关文章

  1. js生成hash序列

    炒鸡简单的js生成hash序列的方法.如下: function createHash (hashLength) { if (!hashLength || typeof(Number(hashLengt ...

  2. js中hash、hashchange事件

    1.hash即URL中"#"字符后面的部分. ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置: ②hash还有另 ...

  3. js 定义hash类

    // JavaScript Documentfunction HashTable(){    this._hash={};    this._count=0;            /**    *添 ...

  4. Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案

    文件的hash指纹通常作为前端静态资源实现增量更新的方案之一,Webpack是目前最流行的开源编译工具之一,其强大的功能也带来很多坑(当然,大部分麻烦其实都可以在官方文档中找到答案). 比如,在Web ...

  5. rsa && sha1 js code

    jsbn.js /* * Copyright (c) 2003-2005 Tom Wu * All Rights Reserved. * * Permission is hereby granted, ...

  6. webpack多页面开发与懒加载hash解决方案

    之前讨论了webpack的hash与chunkhash的区别以及各自的应用场景,如果是常规单页面应用的话,上篇文章提供的方案是没有问题的.但是前端项目复杂多变,应对复杂多页面项目时,我们不得不继续踩w ...

  7. Gulp:静态资源(css,js)版本控制

    为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源: 然后涉及到的html模板里的src也要做相应的修改,静态资源需要优化(压缩合并) 文件目录 ...

  8. 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 ...

  9. webpack3中文版使用参考文档--全面解析webpack.config.js

    Webpack目前官方发布的最新版本是3.1.0,相对于2.0的怎么本,在语法上没有变动,只是新增了功能.使用webpack,需要事先安装node.js,并对node.js生态有一些基本的了解,比如( ...

随机推荐

  1. 新机自动创建yum库

    #!/bin/bash#for a newsystem to setup auto reposity YUM_DIR=/etc/yum.repos.dMOUNT_DIR=/mntDEV_DIR=&qu ...

  2. Hibernate配置文件与映射文件的创建

    1. config文件的创建: 内容: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hib ...

  3. Orchard SQLite v1.7.2

    1. Upgrade NHibernate to v3.3.3 2. Add lib csharp-sqlite to support SQLite 3. Replace oracle client ...

  4. 用c#开发微信(1)服务号的服务器配置和企业号的回调模式 - url接入 (源码下载)

    最近研究了下服务号的服务器配置和企业号的回调模式.真正实现完后,觉得很简单,但一开始还是走了点弯路,所以写了个web程序,只用改下配置文件里的参数就可以直接用了.下面介绍下详细的用法以及实现步骤. 本 ...

  5. Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮

    上次介绍了 Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 现在开始介绍如何配置审批流,首先在form上添加三个按钮,Submit, Agree, Reject: 1. ...

  6. Asp.Net Web API 2第十一课——在Web API中使用Dependency Resolver

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文主要来介绍在Asp.N ...

  7. [MFC] MFC编译程序,缺少MFC动态链接库的解决

    问题:VS2010 c++编写的程序在别人的机子运行不了,缺少mfc100u.dll xxx100d.dll等的解决方法   解决方法: 1.将这些dll打包,和应用程序一起发布; 2.采用MFC静态 ...

  8. swoole

    http://www.swoole.com/wiki/index/prid-1-p-project/road_map.html

  9. paip.提升效率---filter map reduce 的java 函数式编程实现

    #paip.提升效率---filter map reduce 的java 函数式编程实现 ======================================================= ...

  10. Merge Into

    Merge Into [dbo].[Student] S using [10.58.8.224\TEST].[TestDb].[dbo].[Student] T on S.ID=T.ID WHEN M ...