JS数组操作

一、JS删除数组元素

view plaincopy to clipboardprint?
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’本文出自 51CTO.COM技术博客 
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’本文出自 51CTO.COM技术博客

二、删除重复元素

view plaincopy to clipboardprint?
Array.prototype.del = function(n) {   
        if (n<0) {  
          return this;   
        }  
        return this.slice(0,n).concat(this.slice(n+1,this.length));   
      }  
    Array.prototype.removeRepeat=function() {   
        this.sort();   
        var rs = [];   
        var cr = false;   
        for (var i=0; i<this.length; i++)   
        {   
          if (!cr) cr = this[i];   
          else if (cr==this[i]) rs[rs.length] = i;   
          else cr = this[i];   
        }   
        var re = this;   
        for (var i=rs.length-1; i>=0; i--) re = re.del(rs[i]);   
        return re;   
      }  
 
/  
Array.prototype.unique=function()  
{  
var a={};  
for(var i=0;i<this.length;i++)  
{  
if(typeof a[this[i]]=="undefined")  
a[this[i]]=1;  
}  
this.length=0;  
for(var i in a)  
this[this.length]=i;  
return this;  
}  
 
   var    a    =    [1,2,4,12,5,3,5,4,8,5,2,8,8,1,5];     
   alert(a    +"/n"+    a.unique());  
Array.prototype.del = function(n) {
        if (n<0) {
          return this;
        }
        return this.slice(0,n).concat(this.slice(n+1,this.length));
      }
    Array.prototype.removeRepeat=function() {
        this.sort();
        var rs = [];
        var cr = false;
        for (var i=0; i<this.length; i++)
        {
          if (!cr) cr = this[i];
          else if (cr==this[i]) rs[rs.length] = i;
          else cr = this[i];
        }
        var re = this;
        for (var i=rs.length-1; i>=0; i--) re = re.del(rs[i]);
        return re;
      }

/
Array.prototype.unique=function()
{
var a={};
for(var i=0;i<this.length;i++)
{
if(typeof a[this[i]]=="undefined")
a[this[i]]=1;
}
this.length=0;
for(var i in a)
this[this.length]=i;
return this;
}

   var    a    =    [1,2,4,12,5,3,5,4,8,5,2,8,8,1,5];  
   alert(a    +"/n"+    a.unique());
 

三、其他

new Array()
new Array(len)
new Array([item0,[item1,[item2,...]]]
使用数组对象的方法:
var objArray=new Array();
objArray.concact([item1[,item2[,....]]]-------------------将参数列表连接到objArray的后面形成一个新的数组并返回,原有数组不受影响。如:var arr=["a","b","c"];
arr.concact("d","e");
将返回包括从"a"到"e"字母元素的数组。而arr本身不受影响。
objArray.join(separator)-----------------以separator指定的字符作为分割符,将数组转换为字符串,当seperator 为逗号时,其作用和toString()相同。
objArray.pop()---------通俗的讲,就是弹出数组的最后一个元素。结合下面的push方法,使得将数组作为栈来使用成为可能。pop方法返回数组最后一个元素的值,并将length属性减1,即返回后立即丢失最后一个元素。
objArray.push([value1[,value2[,....]]])-------------将参数添加到数组的结尾。如:[1,2,3, 4].push("a","b")将得到[1,2,3,4,"a","b"]
objArray.reverse()将数组中的元素反转排列。如:[1,2,3].reverse()将得到[3,2,1],这个操作是在原有数组上经行操作,同时也返回数组本身
objArray.shift()-----------移去数组的第一个元素,并返回这个元素的值。这个方法的性质和pop方法很类似,pop方法是移去最后一个元素。
objArray.slice(start,end)----------- 返回数组对象的一个子集,索引从start开始(包括 start),到end结束(不包括end),原有数组不受影响。如:[1,2,3,4,5,6].slice(1,4)将得到[2,3,4]。当 start或者end为负数时,则使用他们加上length后地值。如:[1,2,3,4,5,6].slice(-4,-1)将得到[3,4,5]。如果end小于等于start,将返回空数组。
objArray.sort(comparefn)------- 根据comparefn定义的大小比较函数,对一个数组进行排序。函数comparefn必须接受两个参数element1,element2,如果需要需要element1排在element2之前,应该返回一个负数;如果需要element1排在element2之后,应该返回一个正数,如果两个数平等对待(即保持原有顺序)则返回0。当省略comparefn时,则元素按照字典顺序排列。如:对定义的比较函数cmp: function cmp(e1,e2){return e1-e2;}则[3,4,2,7].sort(cmp)将得到[2,3,4,7].
objArray.splice(start,deleteCount[,item1,item2[,...]]]) 这是一个复杂的函数,用于完成数组元素的删除 取代和插入操作。其中,start参数表示要进行操作的索引位置,deleteCount指从start开始要删除的元素的元素个数(包括了start位置),如果deleteCount省略,则表示从start开始要删除数组的剩余部分。[,item1[,item2[,...]]]则表示可选的插入到start之前的元素列表。如:
var arr=[0,1,2,3,4,5,6];
arr.splice(1,1);
document.write(arr);//显示“0,2,3,4,5,6”
arr=[0,1,2,3,4,5,6];
arr.splice(0,0,"a","b");
document.write(arr);//显示“a,b,0,1,2,3,4,5,6"
arr=[0,1,2,3,4,5,6];
arr.splice(3,2,"c","d");
document.write(arr);//显示"0,1,2,c,d,5,6"
objArray.unshift(item1[,item2[,...]]])------------------- 将参数列表插入到数组的开头。其性质和push方法类型,但push方法是将元素添加到数组的结尾。如: [1,2,3,4].unshift("a","b")将得到["a","b",1,2,3,4]。
从大到小冒泡排序法:

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/staywithc/archive/2009/03/09/3972443.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值