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生态有一些基本的了解,比如( ...
随机推荐
- Python3学习(2)-中级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...
- 关于用CSS3画图形的一些思考
众所周知,用CSS3的圆角.转换可以画出各种不同的形状,制作不同的图案,早些前先驱者已画出经典的叮当猫,iphone手机等展示CSS3的强大实力,趁最近有空我也对CSS3进行了一些实践,颇有收获. 用 ...
- QT--以共享的方式发布应用,QT依赖库
Building Qt as a Shared Library 因为:QT基本上都是采用动态编译的(被安装的OS中的),(如安装包往往都是默认动态编译处理好的动态库),所以我们采用动态连接的方式进行发 ...
- 【Python自动化运维之路Day7】
1. configparser模块 import configparser config = configparser.ConfigParser() #先把config应用一下configparser ...
- Dynamic CRM 2013学习笔记(五)禁止修改、删除审批通过后的单据
审批通过后的单据,一般要对其进行控制,不能修改,不能添加,删除等,下面分别介绍下如何实现: 一. 禁止修改: 1. 主表控制,如果页面上审批状态为审批中或审批通过,就把整个页面都disable掉 1: ...
- Java 中的反射机制
JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为ja ...
- C#设计模式(19)——状态者模式(State Pattern)
一.引言 在上一篇文章介绍到可以使用状态者模式和观察者模式来解决中介者模式存在的问题,在本文中将首先通过一个银行账户的例子来解释状态者模式,通过这个例子使大家可以对状态者模式有一个清楚的认识,接着,再 ...
- C#设计模式(7)——适配器模式(Adapter Pattern)
一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...
- 控制ASP.NET Web API 调用频率与限流
ASP.NET MVC 实现 https://github.com/stefanprodan/MvcThrottle ASP.NET WEBAPI 实现 https://github.com/stef ...
- 清爽绿色格调图文box通用样式
今天是端午节,小菜献上一款剽窃的box样式,祝大家端午快乐! 此box样式以绿色为主要色调,清新自然,适合大多数设计场景. 此box算是比较高级的了,box中的列表是图文列表,可以显示一张小图片,然后 ...