javascript中Array对象的方法

Posted by 竹林品雨 on August 23, 2013
javascript中Array对象的方法
1.join()和split()
  将数组的元素转化成字符串并连接在一起,默认使用逗号作为连接符,也可自定义
  如下例。split() 是join()的逆过程。都不会修改原值。
  例:
    var a = [1,2,3];
    a.join(); //"1,2,3"
    a.join(" "); //"1 2 3"
    a.join(""); //"123"
    var b = new Array(10); //长度为10的空数组
    b.join('='); // "=========="
  
    var s = "z,h,r,m,g,h,g";
    s.split(); //["z,h,r,m,g,h,g"]
    s.split(","); //["z", "h", "r", "m", "g", "h", "g"] ___

2.reverse()
  将数组顺序翻转,会修改数组本身,而不是返回新的数组。
  例:
    var a = [1,2,3];
    a.reverse().join(); //"3,2,1"
    a的值是[3,2,1] ___

3.sort()
  对数组进行排序,会修改数组本身。默认将数组元素转换为字符串,然后按字符顺序
  从小到大排序。也可传入一个匿名函数作为参数。
  例:
    var a = [33,4,1111,222];
    a.sort(); //[1111, 222, 33, 4] 按字母表顺序
    a.sort(function(a,b){return a-b }); //[4, 33, 222, 1111] 按数值顺序从小到大
    a.sort(function(a,b){return b-a }); //[1111, 222, 33, 4] 按数值顺序从大到小
  
    var b = ['ant','Bug','cat','Dog'];
    b.sort(); //["Bug", "Dog", "ant", "cat"] //按照ASCII顺序 排序
    b.sort(function(s,t){ //不区分大小写 按字母顺序排序
      var a = s.toLowerCase();
      var b = t.toLowerCase();
      if( a < b ) return -1;
      if( a > b ) return 1;
      return 0;
    });
    结果:["ant", "Bug", "cat", "Dog"] ___

4.concat()
  数组合并,将已知数组与其他数组合并,执行结果会返回一个新数组,不修改原来
  调用concat()的数组。
  例:
    var a = [1,2,3];
    a.concat(4,5); // [1,2,3,4,5]
    a.concat([4,5]); // [1,2,3,4,5]
    a.concat([4,5],[6,7]); // [1,2,3,4,5,6,7]
    a.concat(4,[5,[6,7]]); // [1,2,3,4,5,[6,7]]
    a依旧是 [1,2,3] ,没有被修改。 ___

5.slice()
  返回一个数组片段或子数组。不会修改调用数组。 包含两个参数:第一个是起始
  位置,第二个是终止位置。返回结果不包含终止位置的元素。
  例:
    var a = [1,2,3,4,5];
    a.slice(0,3); //[1,2,3]
    a.slice(3); //[4,5] 只传一个参数表示从参数指定的位置开始直到数组结尾
    a.slice(1,-1); //[2,3,4] 位置-1表示的是元素5 因为位置0表示的是元素1。
    a.slice(-3,-2); //[3] ___

6.splice()
  从数组中删除元素,插入元素到数组中。或者同时完成以上两种操作。会对原数组
  做出修改。第一个参数指定了插入或删除元素的起始位置,第二个参数指定的是从
  数组中删除元素的个数。如果省去第二个参数表示删除从指定的起始位置开始到数
  组结尾的全部元素。splice()返回值是由被删除元素组成的数组。
  例:
    var a = [1,2,3,4,5,6,7,8]
    //删除位置4也就是元素5(包括5)之后的所有元素
    a.splice(4) //返回值 [5,6,7,8] a的值[1,2,3,4]
    a.splice(1,2) //返回值 [2,3] a的值[1,4]
    a.splice(1,1) //返回值 [4] a的值[1]

  splice() 前两个参数指定了需要删除的数组元素,紧随其后的任意个数参数指定了
  需要插入到数组中的元素。插入的位置是第一个参数指定的。    
  例:
    var b = ["m","l","x","b","r","j"]
    //在位置3处不删除任何元素,插入5,2,1三个元素
    b.splice(3,0,5,2,1)  //返回值 [] 
    b的值["m", "l", "x", 5, 2, 1, "b", "r", "j"]

    var c = ["m","l","x","AI","b","r","j"]
    //删除从位置3开始的一个元素即 "AI" 插入5,2,1三个元素
    c.splice(3,1,5,2,1) //返回值 ["AI"]
    b的值["m", "l", "x", 5, 2, 1, "b", "r", "j"] ___

7.push()和pop()
  从数组末尾存入(push())或弹出(pop())元素,push()返回新数组的长度,pop()返回
  弹出的元素并从数组中删除该元素。
  例:
    var stack = [];     //stack: []
    stack.push(1,2);    //stack: [1,2] 返回 2
    stack.pop();        //stack: [1]   返回 2
    stack.push(3);      //stack: [1,3] 返回 2
    stack.pop();        //stack: [1]   返回 3
    stack.push([4,5]);  //stack: [1,[4,5]]   返回 2
    stack.pop();        //stack: [1]   返回 [4,5]
    stack.pop();        //stack: []   返回 1 ___

8.unshift()和shift()
  从数组开始位置存入(unshift())或弹出(shift())元素,unshift()返回新数组的长度
  ,shift()删除数组的第一个元素并将其返回。
  例:
    var a = [];   //a: []
    a.unshift(1); //a: [1]  返回 1
    a.unshift("a"); //a: ["a",1]  返回 2
    a.shift();//a: [1]  返回 "a"
    a.unshift(7,[4,5]); //a: [7,[4,5],1]  返回 3  注意:此处是参数作为整体存入的
    a.shift();//a: [[4,5],1]  返回 7
    a.shift();//a: [1]  返回 [4,5]
    a.shift();//a: []  返回 1