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生态有一些基本的了解,比如( ...
随机推荐
- javascript基础知识-对象
javascript创建对象有三种方法: 1)对象直接量 例:var empty = {}; var point = {x:1,y:4}; var book = { "main title& ...
- Spring基础知识汇总
Spring优点: 低侵入式设计,代码的污染极低: 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺: Spring的IoC容器降低了 ...
- Orchard SQLite v1.7.2
1. Upgrade NHibernate to v3.3.3 2. Add lib csharp-sqlite to support SQLite 3. Replace oracle client ...
- C#设计模式(16)——迭代器模式(Iterator Pattern)
一.引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合.在一章中,将介绍一下迭代器模式.下面废话不多说了,直接进入本博文的主题. ...
- 【笔记】select2的使用
<script src="~/Scripts/jquery-1.10.2.js"></script> <script src="~/Cont ...
- QT自定义精美换肤界面
陆陆续续用QT开发过很多项目,也用QT写过不少私活项目,也写过N个工具,一直梦寐以求能像VC一样可以很方便的有个自定义的界面,QSS的强大让我看到了很好的希望,辗转百度谷歌无数次,一直搜索QT相关的换 ...
- 拟物设计和Angular的实现 - Material Design(持续更新)
Material Design是Google最新发布的跨平台统一视觉设计语言.直接翻译是物质设计,但是我更倾向于使用"拟物设计"更为准确. 据谷歌介绍,Material Desig ...
- 易出错的C语言题目之二:指针
一.写出输出结果 #include<stdio.h> int main(){ ]; a[] = ; a[] = ; a[] = ; int *p,*q; p = a; q = &a ...
- PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束
PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束 ExecutorService并没有提供什么 isDone()或者isComplete()之类的方法. 作者Atti ...
- RAR和ZIP:压缩大战真相
转:http://fqd2eh4y.blog.163.com/blog/static/69195855200801035015857 前言--王者归来? 等待足足两年之久,压缩霸主WinZip终于在万 ...