JavaScript_object(基于map和数组练习)
JavaScript在编程过程中,不会像java那么方便,提供大量的API让开发这直接去调用,但底层也封装大量的工具让开发者写方法去实现,
以map为例,写简单的增删改查模拟java中的map:
function Map() {
var obj = {}; //创建一个对象
//将值绑定到map上
this.put = function (key,value) {
obj[key] = value;
}
//获取map的个数
var count = 0;
this.size = function() {
var count = 0;
for ( var i in obj) {
count ++;
}
return count;
}
//根据key获取value(很常用,今天写java时就用到)
this.get = function(key) {
if (obj[key] || obj[key] === 0 || obj[key] === false) {
return obj[key];
}else{
return null;
}
}
//移除值
this.remove = function(key) {
if (obj[key] || obj[key] === 0 || obj[key] === false) {
delete obj[key];
}
}
//遍历map的key(value);
this.foreach = function(fn) { //fn回调函数
for ( var i in obj) {
fn(i,obj[i]);
}
}
}
var m = new Map(); //实例化map
m.put("001",false); //将键值添加到map中
m.put("002",true);
m.put("003","sz");
//进行测试
alert(m.size());
alert(m.get("003"));
alert(m.remove("001"));
m.foreach(function(key,value){
alert(key + ":" + value);
})
在数组中去重,JavaScript中对象的key永远是唯一的,所以利用特性写简单的方法去重
var arr = [ 2, 1, 2, 10, 2, 3, 5, 5, 1, 10, 13 ];
将数组转化成一个对象
function obj(attr) {
var obj = {};
for ( var i = 0; i < attr.length; i++) {
obj[arr[i]] = true;
}
return obj;
}
将对象转换成一个数组
function array(obj) {
var att = [];
for ( var i in obj) {
if (obj.hasOwnProperty(i)) {
att.push(i);
}
}
return att;
}
function name(newArr) {
return array(obj(newArr));
}
alert(name(arr));
JavaScript_object(基于map和数组练习)的更多相关文章
- "《算法导论》之‘线性表’":基于动态分配的数组的顺序表
我们利用静态分配的数组来实现的顺序表的局限还是挺大的,主要在于它的容量是预先定好的,用户不能根据自己的需要来改变.如果为了后续用户能够自己调整顺序表的大小,动态地分配数组空间还是很有必要的.基于动态分 ...
- 【转】基于Map的简易记忆化缓存
看到文章后,自己也想写一些关于这个方面的,但是觉得写的估计没有那位博主好,而且又会用到里面的许多东西,所以干脆转载.但是会在文章末尾写上自己的学习的的东西. 原文出处如下: http://www.cn ...
- 基于Map的简易记忆化缓存
背景 在应用程序中,时常会碰到需要维护一个map,从中读取一些数据避免重复计算,如果还没有值则计算一下塞到map里的的小需求(没错,其实就是简易的缓存或者说实现记忆化).在公司项目里看到过有些代码中写 ...
- js map()处理数组和对象数据
之前的文章梳理了JS数组与对象属性的遍历方法,本文介绍专门用以遍历并处理数据的map()方法. 一.原生map() map()是数组的一个方法,它创建一个新数组,其结果是该数组中的每个元素都调用一个提 ...
- Set、Map及数组去重
https://cloud.tencent.com/developer/article/1437254 https://blog.csdn.net/weixin_34247299/article/de ...
- 坐标轴刻度取值算法-基于魔数数组-源于echarts的y轴刻度计算需求
本文链接:https://blog.csdn.net/qq_26909801/article/details/96966372数值型坐标轴刻度计算算法前言算法描述上代码代码运行效果结语前言因实习的公司 ...
- 三 基于Java动态数组手写队列
手写队列: package dataStucture2.stackandqueue; import com.lt.datastructure.MaxHeap.Queue; import dataStu ...
- 图解kubernetes scheduler基于map/reduce无锁设计的优选计算
优选阶段通过分离计算对象来实现多个node和多种算法的并行计算,并且通过基于二级索引来设计最终的存储结果,从而达到整个计算过程中的无锁设计,同时为了保证分配的随机性,针对同等优先级的采用了随机的方式来 ...
- 图解kubernetes scheduler基于map/reduce模式实现优选阶段
优选阶段通过分map/reduce模式来实现多个node和多种算法的并行计算,并且通过基于二级索引来设计最终的存储结果,从而达到整个计算过程中的无锁设计,同时为了保证分配的随机性,针对同等优先级的采用 ...
随机推荐
- ORACLE WIN7安装过程截图
尽管 有点不正规,但还可以.
- java根据本地Ip获取mac地址
import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; impo ...
- mysql 监控长事务
mysql> desc information_schema.innodb_trx -> ; +----------------------------+----------------- ...
- javascript 路线整理
前端开发很重要,编写脚本也不容易. 总结我以前的前端学习经历,基本是一团乱麻:css+javascript是在大三自学的,当时自己做课程设计,逼着自己在一个月之内,写了一个半成品的j2ee网站.当时, ...
- Light OJ 1004 - Monkey Banana Problem(DP)
题目大意: 给你一菱形的数字阵,问从最上面走到最下面所能获得的最大值是多少? #include<cstdio> #include<cstring> #include<io ...
- 【转】处理新版Chrome书签、菜单字体不清晰
原文网址:http://www.nmgwddj.com/share/311.html 昨晚打开Chrome浏览器,忽然感觉有些什么东西变了,仔细看了半天忽然发现,书签中的字体和网页中右键的字体全部都变 ...
- 【转】android颜色对应的xml配置值
原文网址:http://www.cnblogs.com/etgyd/archive/2011/04/02/2003778.html android颜色对应的xml配置值 <?xml versio ...
- Java---字节输入,文件操作,病毒制造,请谨慎运行!
今天刚刚学了Java文件操作,跟着老师的思路,迫不及待的制造了这个小病毒. 用到的是一些小知识,很简单. 创建文件和文件夹,向文件中写入字节. 我已渐渐的爱上了编程!!! 下面附上完整代码: impo ...
- poj2007
极角排序,其实是叉乘排序 #include <iostream> #include <algorithm> #include <math.h> #include & ...
- J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题
J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题 2012年03月09 ...