javascript权威指南学习笔记-数组1(八)
来源:互联网 发布:java从入门到精通第4版 编辑:程序博客网 时间:2024/05/22 03:08
数组是js里面最常用的对象了,日常开发许多时候都是面向一个数组在编程:
常用方法:数组元素添加和删除
提到添加删除,最先想到的是push、pop、unshift、shift
//push在数组尾部添加元素var userName=["wangwu"];//在数组的尾部追加了2个元素userName.push("zhangsan","lisi");//从数组尾部删除了一个元素userName.pop();console.log(userName);//输出["wangwu", "zhangsan"]
其实在开发过程中push用的比较多,而pop用的比较少,因为实际编程中,大部分应该是传入一个值,根据值进行删除操作,而直接从尾部删除一个元素的情况是比较少的:
//写个根据数组值进行删除操作 采用数组的delete方法来实现 function getAryIndex(array,val){ //如果是ECMAScript5直接调用 if(typeof array.indexOf=="function"){ return array.indexOf(val); }else{ //如果不支持ECMAScript5 则循环比较获取 for(var num=0;num<array.length;num++){ if(array[num]==val){ return num; } } return -1; } } function deleteEl(array,val){ //查找元素在数组中的位置, 当然ECMAScript5里面已经存在了获取元素序号的方法,但ECMAScript3 是没有的 var index=getAryIndex(array,val); if(index>0){ delete(array[index]); } } var userName=["wangwu","zhangsan","lisi"]; deleteEl(userName,"zhangsan"); console.log(userName); //输出["wangwu", 2: "lisi"] console.log(userName[1]);//输出为undefined
其实这种删除在程序里也比较少,一般希望删除了该元素,就不希望该元素在数组中还占有位置,而delete删除是不会改变数组的length,为了修改length属性,可以采用splice来实现数组的删除
function deleteEl(array,val){ //查找元素在数组中的位置, 当然ECMAScript5里面已经存在了获取元素序号的方法,但ECMAScript3 是没有的 var index=getAryIndex(array,val); if(index>0){ array.splice(index,1); } } console.log(userName);//输出["wangwu", "lisi"] //这就是想要的删除操作咯
但又会感觉代码写的有点别扭,为啥要把数组作为参数传递进去呢,不简洁也麻烦,可以将deleteEl改造成数组的原型方法,通过原型继承扩展的方式来实现
function getAryIndex(array,val){ if(typeof array.indexOf=="function"){ return array.indexOf(val); }else{ for(var num=0;num<array.length;num++){ if(array[num]==val){ return num; } } return -1; } } //通过原型继承对数组对象进行方法扩展 Array.prototype.deleteEl=function(val){ var index=getAryIndex(this,val); if(index>0){ this.splice(index,1); } } var userName=["wangwu","zhangsan","lisi"]; userName.deleteEl("zhangsan");//这样写更加直观了 console.log(userName);//输出["wangwu", "lisi"]
当然我们还可以将getAryIndex方法也通过原型继承方式将方法扩展了。
//unshift在数组头部插入一个元素、shift方法在数组头部删除元素
//push在数组尾部添加元素var userName=["wangwu"];//在数组的尾部追加了2个元素userName.unshift("zhangsan","lisi"); console.log(userName);//输出var userName=["wangwu"]; //在数组的尾部追加了2个元素userName.unshift("zhangsan","lisi");console.log(userName);//输出["zhangsan", "lisi", "wangwu"]
0 0
- javascript权威指南学习笔记-数组1(八)
- 《javascript权威指南》学习笔记数组对象
- Javascript权威指南学习笔记1:第一章
- javascript权威指南学习笔记
- javascript权威指南学习笔记
- ###JavaScript权威指南学习笔记:
- javaScript权威指南学习笔记
- javascript权威指南学习笔记-数组2(九)
- JavaScript权威指南笔记4_数组
- JavaScript权威指南笔记之数组方法
- javascript权威指南学习笔记-客户端javascript(1)
- JavaScript权威指南笔记 - 1
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- 《Javascript权威指南》学习笔记之八:静态成员、静态类、枚举、重载和覆盖
- javascript权威指南第一部分学习笔记
- Javascript权威指南学习笔记(一)
- javascript权威指南第六版 学习笔记
- 最近被node的post和get烦了一小下
- 欢迎使用CSDN-markdown编辑器
- 数据结构实验二--单链表的基本实现
- C-043.结构体的储存细节,以及#pragma pack(n)对齐方式
- Oracle 的INSTR函数MySQL实现
- javascript权威指南学习笔记-数组1(八)
- wamp上配置域名
- 算法复杂度分析——数学角度
- 高级多态(三):复杂的抽象层次结构
- (六十五)for循环
- nginx http处理请求入口
- 2015.12.05-06待办事项
- final修饰符 final一个对象
- POJ 1811 *** Prime Test(详解Miiler_Rabin算法与Pollard_Rho算法)