由于项目中用到了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. android中 EditTex t的 inputType 属性

    //文本类型,多为大写.小写和数字符号    android:inputType="none"    android:inputType="text"    a ...

  2. Java中FileOutputStream和FileInputStream使用例子

    package a.ab; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.F ...

  3. React与ES6(四)ES6如何处理React mixins

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  4. Asp.Net Web API 2第十四课——Content Negotiation(内容协商)

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...

  5. 团队项目--站立会议DAY5

    第五次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:继续对钟灵毓秀和赵莹同学编写的代码进行进一步审核及辅助. 2.钟灵毓秀:继续完善相关功能代码,逐步整理出各 ...

  6. 深入浅出OOP(六): 理解C#的Enums

    MSDN定义:枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法.  例如,假设您必须定义一个变量,该变量的值表示一周中的一天. 该变量只能存储七个有意义的值. 若要定义这 ...

  7. Qt之Dialog\widget\ mainwindow的区别和布局管理器 & 分裂器的区别

    1.Dialog\widget\ mainwindow的区别 注意mainwindow和widget的区别,mainwindow都工具栏和菜单栏 Dialog and mainwinodws 都是继承 ...

  8. APU平台DirectX 12性能测试:超级大惊喜!

    APU平台DirectX 12性能测试:超级大惊喜! 转自:http://www.ithome.com/html/digi/129840.htm [size=1pc]微软将会在接下来的GDC 2015 ...

  9. 【原创】jmeter3.0在beanshell中输入中文乱码以及字体大小的更改

    我使用的是最新的jmeter3.0版本,新建一个beanshell sampler,在里面输入中文,发现显示的是乱码,而且字体非常小,看着吃力,调研了一下,可以在bin/jmeter.properti ...

  10. paip. 混合编程的实现resin4 (自带Quercus ) 配置 php 环境

    paip. 混合编程的实现resin4 (自带Quercus ) 配置 php 环境 #---混合编程的类型 1.代码inline 方式 2.使用库/api  解析方式. #----配置resin 支 ...