javascript 删除数组元素和清空数组的简单方法


Posted in Javascript onFebruary 24, 2017

javascript 删除数组元素和清空数组的简单方法

一、清空数组

var ary = [1,2,3,4]; 
ary.splice(0,ary.length);//清空数组 
console.log(ary); // 输出 [],空数组,即被清空了

二、删除数组元素

var ary = [1,2,3,4]; 
ary.splice(0,1);
或 ary.splice($.inArray(2, ary), 1); 其中$.inArray(2, ary)用来查找某元素在数组中的索引位置。

三,js 删除数组几种方法

var arr=[‘a','b','c'];

若要删除其中的'b',有两种方法:

**1,**delete方法:delete arr[1]

这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用

for(index in arr)
{
 document.write('arr['+index+']='+arr[index]);
}

这种遍历方式跳过其中undefined的元素

* 该方式IE4.o以后都支持了

2,数组对象splice方法:arr.splice(1,1);

这种方式数组长度相应改变,但是原来的数组索引也相应改变

splice参数中第一个1,是删除的起始索引(从0算起),在此是数组第二个元素

第二个1,是删除元素的个数,在此只删除一个元素,即'b';

此时遍历数组元素可以用普通遍历数组的方式,比如for,因为删除的元素在

数组中并不保留

该方法IE5.5以后才支持
值得一提的是splice方法在删除数组元素的同时,还可以新增入数组元素

比如arr.splice(1,1,'d','e'),d,e两个元素就被加入数组arr了

结果数组变成arr:'a','d','e','c' 

另外,JavaScript通过设置数组的length属性来截断数组,是惟一一种缩短数组长度的方法。

如果使用delete运算符来删除数组中元素,虽然那个元素变成未定义的,但是数组的length属性并不改变两种删除元素,数组长度也改变的方法。

/*
  * 方法:Array.remove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组
*/
//经常用的是通过遍历,重构数组.
Array.prototype.remove=function(dx)
{
if(isNaN(dx)||dx>this.length){return false;}
for(var i=0,n=0;i<this.length;i++)
{
if(this[i]!=this[dx])
{
this[n++]=this[i]
}
}
this.length-=1
 }
 a = ['1','2','3','4','5'];
 alert("elements: "+a+"nLength: "+a.length);
 a.remove(0); //删除下标为0的元素
 alert("elements: "+a+"nLength: "+a.length);
/*
  * 方法:Array.baoremove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组.
  */
 //也可以用splice来实现.
 Array.prototype.baoremove = function(dx)
 { // 3water.com
if(isNaN(dx)||dx>this.length){return false;}
this.splice(dx,1);
 }
 b = ['1','2','3','4','5'];
 alert("elements: "+b+"nLength: "+b.length);
 b.baoremove(1); //删除下标为1的元素
 alert("elements: "+b+"nLength: "+b.length);

在IE5或更低的版本中,JavaScript的Array(数组)对象并未提供现成的删除数组元素的方法。在IE5.5+的版本中,虽然有splice方法,但是并不是删除某一项(或几项),而仅仅是将某一项(或几项)的值清除,也就是说该项仍然存在,数组的长度并没有改变。

事实上,可以自己为数组增加一个删除方法(注意,这里指的是将数组的某一项真正的从数组成员中移除)。或许,会想到用循环来为数组重新赋值,这样做当然可以,但效率很低。

以下介绍利用Array对象的两个方法slice、concat来自定义删除数组的方法。

Array.prototype.del=function(n) { //n表示第几项,从0开始算起。
//prototype为对象原型,注意这里为对象增加自定义方法的方法。
 if(n<0) //如果n<0,则不进行任何操作。
return this;
 else
return this.slice(0,n).concat(this.slice(n+1,this.length));
/*
 concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
 这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
 组成的新数组,这中间,刚好少了第n项。
 slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
*/
}
//自己增加的方法
var test=new Array(0,1,2,3,4,5);
test=test.del(3); //从0算起,删除第4项。
alert(test);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 Javascript
基于JavaScript实现复选框的全选和取消全选
Feb 09 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
Jul 23 Javascript
写一个Vue Popup组件
Feb 25 Javascript
基于Vue插入视频的2种方法小结
Apr 02 Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
May 22 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
JavaScript基本类型值-Number类型
Feb 24 #Javascript
AngularJS Toaster使用详解
Feb 24 #Javascript
js获取隐藏元素的宽高
Feb 24 #Javascript
js css自定义分页效果
Feb 24 #Javascript
jQuery快速高效制作网页交互特效
Feb 24 #Javascript
Angular.js自定义指令学习笔记实例
Feb 24 #Javascript
利用原生JS与jQuery实现数字线性变化的动画
Feb 24 #Javascript
You might like
世界收音机发展史
2021/03/01 无线电
php四种基础算法代码实例
2013/10/29 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
浅谈php调用python文件
2019/03/29 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
python中map()与zip()操作方法
2016/02/27 Python
python读写LMDB文件的方法
2018/07/02 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
python 解压pkl文件的方法
2018/10/25 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
精细化工应届生求职信
2013/11/17 职场文书
淘宝活动策划方案
2014/02/06 职场文书
父母对孩子的寄语
2014/04/09 职场文书
秘书英文求职信
2014/04/16 职场文书
2015大学生实训报告
2014/11/05 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
反腐倡廉观后感
2015/06/08 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python