JavaScript笔记 - Object对象特性的应用
可以依据js对象中key是永远不会重复的原则,来模拟Map类型以及去除数组重复项。
1、模拟Map类型
(1)构造Map对象
function Map(){
//private
var obj = {}; // 空的对象容器,存放键值对 //put方法
this.put = function (key,value){
obj[key] = value;
}
//get方法
this.get = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
return obj[key];
}else{
return null;
}
}
//remove方法
this.remove = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
delete obj[key];
}
}
//size方法
this.size = function(){
var count= 0;
for(var arr in obj){
count++;
}
return count;
}
//遍历方法,采用回调函数的方式
this.eachMap = function(fn){
for(var arr in obj){
fn(arr,obj[arr]);
}
}
}
(2)测试代码
//模拟java里的Map类型//函数也是一种对象,可以使用new的方式建立函数实例
var m = new Map();
m.put('01','sscs');
alert(m.size());
alert(m.get('01'));
m.remove('01'); //遍历对象元素,传入的参数是一个函数
m.eachMap(function(key,value){
alert(key +":"+value);
});
2、去除数组重复项
(1)实现代码
function unique(arr){
//第一步:把数组中的值,变成js对象中的key
var obj = {}; //私有对象
for( var i = 0,j = arr.length;i<j;i++){
obj[arr[i]] = true;
}
//第二部:再把js对象还原成数组
var arr = [];//私有对象
for(var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
}
return arr;
}
(2)测试程序
var arr = [1,1,3,4,5];
alert(unique(arr)); //显示1,3,4,5
JavaScript笔记 - Object对象特性的应用的更多相关文章
- javascript ES5 Object对象
原文:http://javascript.ruanyifeng.com/stdlib/object.html 目录 概述 Object对象的方法 Object() Object.keys(),Obje ...
- JavaScript笔记02_对象
目录 1. 函数 1. 函数创建 2. 函数的参数 2. return.break.continue 3. 立即执行函数 4. 对象 5. 枚举对象中的属性 6. 声明提前 1.变量的声明提前 2. ...
- JavaScript之Object对象常用属性与方法手册
MDN Object参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...
- javascript的Object对象的defineProperty和defineProperties
Object的属性 查看官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...
- javascript 遍历object对象
(function(){ var str = ''; for(var i in obj){ //遍历object str += '\n'+(i+' : '+obj[i]); // i+' : '+ob ...
- JavaScript:对Object对象的一些常用操作总结
JavaScript对Object对象的一些常用操作总结. 一.Object.assign() 1.可以用作对象的复制 var obj = { a: 1 }; var copy = Object.as ...
- [Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法
js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+ ...
- JavaScript Object对象
目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...
- javascript 核心语言笔记 6 - 对象
对象是 JavaScript 的基本数据类型.是一种复合值:将很多值聚合在一起.对象可以看做是无序集合,每个属性都是一个名/值对.这种基本数据结构还有很多叫法,比如「散列」(hash).「散列表」(h ...
随机推荐
- onethink中的用户登录session签名
用户登录签名问题,即防止伪造登录session,增加一个用户登录数组的加密签名 onethink的登录控制,先调用UC表中(UC表也是存储在网站或本地的数据库中的),确认登录信息.如果UC表登录成功, ...
- delphi 调用js脚本
function ExecScript(Code,Lang,Func:string):string; var script:OleVariant; begin script:=CreateOleObj ...
- thinkphp 使用redis 整理(二) mark 一下
参考手册 http://www.cnblogs.com/weafer/archive/2011/09/21/2184059.html redis 几种数据类型选择,参考 : https://b ...
- 17、javaWebService,的使用
2. 实质上分三步操作: 创建一个服务器端(电力系统),和一个客户端(人员系统) 第一步:使用服务器端提供的接口,生成.wsdl文件 第二步:使用.wsdl文件,在电力系统中生成服务器端的代码 第三步 ...
- UVA - 143 Orchard Trees (点在三角形内)
题意: 给出三角形的三个点的坐标(浮点数), 问落在三角形内及三角形边上的整点有多少? 思路:所有点暴力判断(点的范围1-99,三角形可能是0-100,因为这个WA了一下orz) AC代码: ...
- C# Winform Dev控件之TileControl
tileControl 包含TileGroup TileGroup 包含 Tile Tile拖拽时代码 TilteControl的itemPress事件执行 或Tile的itemPress执行 Til ...
- C# Windows服务相关
代码及注释 ServiceController sc = new ServiceController("gupdatem"); sc.Stop();//停止服务 sc.Start( ...
- (数据科学学习手札57)用ggplotly()美化ggplot2图像
一.简介 经常利用Python进行数据可视化的朋友一定用过或听说过plotly这样的神器,我在(数据科学学习手札43)Plotly基础内容介绍中也曾做过非常详细的介绍,其渲染出的图像以浏览器为载体,非 ...
- html-基础知识二
form 功能:向服务器传输数据,实现用户和web 服务器的交互 一.表单属性 accept-charset: 规定在提交表单中使用的字符集 action:规定向何处提交表单地址(url) autoc ...
- Unity3d -- Collider(碰撞器与触发器)
(2d与3d的Collider可以相互存在,但是无法相互协作,如2d是无法检测3d的,反之,一样) 在目前掌握的情况分析,在Unity中参与碰撞的物体分2大块:1.发起碰撞的物体.2.接收碰撞的物体. ...