/*
* MAP对象,基于Array实现并扩展MAP功能
*
* 方法说明:
* size() 获取map元素个数
* isEmpty() 判断map是否为空
* clear() 删除map所有元素
* push(key, value) 向map中增加元素(key, value),顺序的
* remove(key) 删除指定key的元素,成功返回True,失败返回False
* get(key) 获取指定key的元素值value,失败返回NULL
* element(index) 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回NULL
* containsKey(key) 判断map中是否含有指定key的元素
* containsKeyIgnoreCase(key) 判断map中是否含有指定key的元素(忽略大小写)
* containsValue(value) 判断map中是否含有指定value的元素
* values() 获取map中所有value的数
* uniqueValues() 获取map中所有VALUE的数组,唯一的value
* keys() 获取map中所有key的数
* sort() map排序,按照push的顺序
* inverse() map排序,按照push的顺序倒序
* randomKey() 随机一个key
* randomValue() 随机一个value
* randomEntry() 随机一个key-value
*
* 使用例子:
* var map = new Map();
* map.push("key", "value");
* var val = map.get("key");
* map.containsValue("val");
* map.inverse();
* readme: 建议使用字符串作为key
*/
function Map() {
//实例化一个数组
this.elements = new Array();
//获取MAP元素个数
this.size = function () {
return this.elements.length;
}
//判断MAP是否为空
this.isEmpty = function () {
return (this.elements.length < 1);
}
//删除MAP所有元素
this.clear = function () {
this.elements = new Array();
}
//向MAP中增加元素(key, value)
this.push = function (_key, _value) {
//判断是否存在key
if (this.containsKey(_key)) {
return;
}
this.elements.push({
key: _key,
value: _value
});
}
//向MAP中从右边删除元素
this.pop = function () {
return this.elements.pop();
}
//向MAP中从左边删除元素
this.shift = function () {
return this.elements.shift();
}
//删除指定KEY的元素,成功返回True,失败返回False
this.remove = function (_key) {
var bln = false;
//判断是否存在key
if (!this.containsKey(_key)) {
return bln;
}
try {
//遍历数组
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
//从数组中移除
this.elements.splice(i, 1);
return true;
}
}
} catch (e) {
console.log(e);
}
return bln;
}
//获取指定KEY的元素值VALUE,失败返回NULL
this.get = function (_key) {
var result = null;
try {
for (var i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
return this.elements[i].value;
}
}
} catch (e) {
console.log(e);
}
return result;
}
//获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
this.element = function (_index) {
//判断下标是否存在
if (isNaN(_index) || _index < 0 || _index >= this.elements.length) {
return null;
}
try {
return this.elements[_index];
} catch (e) {
console.log(e);
}
return null;
}
//判断MAP中是否含有指定KEY的元素
this.containsKey = function (_key) {
var bln = false;
try {
for (var i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
bln = true;
}
}
} catch (e) {
console.log(e);
}
return bln;
}
//判断MAP中是否含有指定KEY的元素(忽略大小写)
this.containsKeyIgnoreCase = function (_key) {
var bln = false;
try {
for (var i = 0; i < this.elements.length; i++) {
if ((this.elements[i].key+"").toLowerCase() == (_key+"").toLowerCase()) {
bln = true;
}
}
} catch (e) {
console.log(e);
}
return bln;
}
//判断MAP中是否含有指定VALUE的元素
this.containsValue = function (_value) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].value == _value) {
bln = true;
}
}
} catch (e) {
console.log(e);
}
return bln;
}
//获取MAP中所有VALUE的数组(ARRAY)
this.values = function () {
var arr = new Array();
for (var i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].value);
}
return arr;
}
//获取MAP中所有VALUE的数组(唯一的 ARRAY)
this.uniqueValues = function () {
var arr = new Array();
for (var i = 0; i < this.elements.length; i++) {
var v = this.elements[i].value;
//判断数组中是否存在
if (arr.indexOf(v) < 0) {
arr.push(v);
}
}
return arr;
}
//获取MAP中所有KEY的数组(ARRAY)
this.keys = function () {
var arr = new Array();
for (var i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].key);
}
return arr;
}
//获取MAP中所有KEY-VALUE 的数组(ARRAY)
this.toString = function () {
var arr = new Array();
for (var i = 0; i < this.elements.length; i++) {
arr.push(this.elements[i].key+":"+this.elements[i].value);
}
return arr;
}
//生成随机数
this.randomNum = function (size) {
var size = this.elements.length;
var num = parseInt(Math.random() * size);
return num;
}
//随机一个key
this.randomKey = function () {
var randomNum = this.randomNum;
return this.elements[randomNum].key;
}
//随机一个value
this.randomValue = function () {
var randomNum = this.randomNum;
return this.elements[randomNum].value;
}
//随机一个元素(map)
this.randomEntry = function () {
var randomNum = this.randomNum;
return this.elements[randomNum];
}
//map反转,按照push的顺序反转
this.inverse = function(){
this.elements.reverse();
}
//map排序,按照push的顺序
this.sort = function(){
this.elements.sort();
}
}
相关推荐
里面有三个js文件,都是需要引入的。具体的方法,可以看源码。
自己设计的用JavaScript实现Array 和Map 里面有三个Js文件,都需要引入.
主要介绍了JavaScript中利用Array和Object实现Map的方法,实例分析了javascript实现map的添加、获取、移除、清空、遍历等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
array.prototype.map 符合ES5规范的Array.prototype.map填充程序/ polyfill / replacement可以使用到ES3。 该软件包实现了接口。 它可以在ES3支持的环境中工作并符合。 因为Array.prototype.map依赖于接收方(“ ...
array-to-map-源码.rar
javaScript,重写Array 类似java map的key,value键值对结构
* size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY... * keys() 获取MAP中所有KEY的数组(ARRAY)
javascript string和array常用扩展方法
cad程序:有三个命令,1.xcp在拷贝时自动增加拷贝内容的数字串。 2,xarr array的扩展,同1 3. xchg 可以修改相同的字符串,使其中的数字增加
json与bean,array,list,map,简单类型之间的封装、解析
基于vue实现循环滚动列表功能 注意:需要给父容器一个height和:data='Array'和overfolw:hidden;左右滚动需要给ul容器一个初始化 css width。 先来介绍该组件的用法: 1.安装命令: cnpm install vue-seamless-...
主要介绍了@ConfigurationProperties绑定配置信息至Array、List、Map、Bean的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Array的workshop操作和扩展 链表的实现和链表结构的存储管理
一、Array APV系列设备功能简介 4 1.1. 服务器负载均衡(Server Load Balance) 4 1.1.1 SLB的工作模式 4 1.1.2. SLB的负载均衡算法 7 1.1.3. SLB的负载均衡策略 9 1.1.4 Array的SLB健康检查 10 1.1.5 Array的SLB的...
实现了一些比较常见的array功能,并且使用了 jest 进行测试。 实现的方法包括: concat find flat forEach & map includes join pop push reduce reverse shift slice some sort splice unshift 有些同质化比较高的...
array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上 array_column();快速实现:将二维数组转为一维数组 array_column()函数格式为: array array_column ( array $input , mixed ...
SuffixArray 扩展(以单词为单位) 源码
基于matlab实现带论文sound-localization-intensity-mic-array.rar
基于FPGA的CAN通信,FPGA驱动SJA1000T芯片代码,实现标准帧与扩展帧的通信驱动 品牌型号 CAN SJA1000T 与世面上的不同,代码不是SJA1000T芯片代码,而是驱动该芯片的代码。 使用FPGA技术实现了CAN通信,通过编写...
用ARRAY写MATRIX的运算 只有CPP文件。 已很很简单的代码!