JavaScript中的数组操作介绍_javascript本事_脚本之家

2019-12-04 06:07栏目:竞技宝竞猜
TAG:

JavaScript中的数组对象自带了一些方法,可以通过使用这些方法来对数组进行操作。

1.join()

join()

  Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。可以指定一个可选的字符串在生成的字符串中来分割数组的各个元素。如果不指定分隔符,默认使用逗号。如以下代码所示:

可以使用join()方法将数组中的成员合并到一个字符串中:

  var a = [1,2,3]       //创建一个包含三个元素的数组

复制代码 代码如下:var o = [1,2,3];console.log;//1,2,3console.log;//1 2 3var emptyArray = new Array;console.log;//----------

  a.join();        //"1,2,3"

从上面的例子中可以看到,如果join()方法不带参数,那么JavaScript会用逗号作为分隔符将所有的成员合并到一个字符串中;如果join()方法接受参数,那么这个参数会作为分隔符来使用。

  a.join(" ");        //"1 2 3"

reverse()

  a.join("");         //"123"

可以使用reverse()方法将数组中的成员顺序进行颠倒:

  var b = new Array(10);  //长度为10的空数组 

复制代码 代码如下://reverse;console.log;//[3,2,1]

  b.join('-');        //'---------':9个连字号组成的字符串

可以看到,调用reverse()语句后,数组自身将发生改变。

  

执行reverse()语句的返回结果为发生改变后的数组对象。

  Array.join()方法是String.split()方法的逆向操作,后者是将字符串分割成若干块来创建一个数组

sort()

 

可以使用sort()方法对数组中的成员进行排序语句一样,sort()语句会对数组自身进行修改并返回修改后的数组对象:

2.reverse()

复制代码 代码如下:var a = ["Phone", "Mobile",,,"Canon"];a.sort;//["Canon", "Mobile", "Phone", undefined, undefined]var b = [33,44,111];console.log;//[111, 33, 44]console.log{return a-b}));//[33, 44, 111]

 

可以看到,sort()语句还接受一个function作为参数来实现自定义排序。

Array.reverse()方法将数组中的元素颠倒顺序,返回逆序的数组。它采取了替换;换句话说,它不通过重新排列的元素创建新的数组,而是在原先数组中重新排列它们。例如,下面代码使用reverse()和join()方法生成字符串‘3,2,1’:

concat()

  var a = [1,2,3];

可以使用concat()方法对数组进行拼接:

  a.reverse().join()  //'3,2,1'并且现在的a是[3,2,1]

复制代码 代码如下:var c = [1,2,3];console.log;//[1, 2, 3, 4]console.log;//[1, 2, 3, 5, 6]console.log;//[1, 2, 3, 7, 8]console.log(c.concat;//[1, 2, 3, 9, 10, 11, 12]console.log(c.concat;//[1, 2, 3, 42, 43, [44, 45]]console.log;//[1, 2, 3]

3.sort()

可以看到,与reverse语句仅仅只是返回拼接后的结果而已,对数组自身不会产生任何修改。

 

slice()

  Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序(如有必要将临时转化为字符串进行比较):

可以使用slice()语句来获取数组中的子数组:复制代码 代码如下:var d = [1,2,3,4,5,6];console.log;//[1,2,3]console.log;//[]与concat语句仅仅只是返回操作后的结果而已,对数组自身不会产生任何修改。对于slice()语句中的两个参数,JavaScript遵循“前包括后不包括”的原则:第一个参数所指定的数组成员会出现在子数组中,而第二个参数所指定的数组成员则不会出现。

    var a = new Array("banana","cherry","apple");

splice()

    a.sort();

可以使用splice()语句来对数组进行插入和敲除操作。其第一个参数指定插入或敲除的位置,第二个参数指定敲除成员的数目,从第三个参数开始,所有的参数都会被插入到数组中语句返回的结果为被敲除的数组成员所组成的数组。与concat会对数组自身产生修改。

    var s = a.join(", ");  //s == "apple,banana,cherry"   

复制代码 代码如下:var e = [1,2,3,4,5,6,7];console.log;//[2,3]console.log;//[1,4,5,6,7]console.log;//5e.splice;console.log;//[1, 2, 3, [4, 5], 4, 5, 6, 7]

  如果数组中包含undefined元素,它们会被排到数组的尾部。

  为了按照其他方式而非字母表顺序进行数组排序,必须给sort()方法传递一个比较函数。该函数决定了它的两个参数在排好序的数组中的先后顺序。假设第一个参数应该在前,比较函数应该返回一个小于0的数值。反之,假设第一个参数应该在后,函数应该返回一个大于0的数值。并且,假设两个值相等(也就是说,他们的顺序无关紧要),函数应该返回0。因此,例如,用数值大小而非字母表顺序进行输注排列,代码如下:

    var a = [33,4,1111,222];

    a.sort();          //字母表顺序: 1111,222,33,4

    a.sort(function(a,b){   //数值顺序:4,33,222,1111

     return a-b;       //根据顺序,返回负数,0,正数

    })

    a.sort(function(a,b){return b-a});  //数值大小相反的顺序

 

    注意,这里使用匿名函数表达式非常方便。既然比较函数只使用一次,就没必要给他们命名了。

    另外一个数组元素排列的例子,也许需要对一个字符串数组执行不区分大小写的字母表排序,比较函数首先将参数都转化为小写字符串(使用toLowerCase()方法),再开始比较:

      a = ['ant','Bug','cat','Dog']

      a.sort();    //区分大小写的排序:['Bug','Dog','ant','cat']

      a.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()

  Array.concat()方法创建并返回一个新数组,它的元素包括调用concat()的原始数组的元素和concat()的每个参数。如果这些参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身。但要注意,concat()的每个参数。如果这些参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身。但要注意,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]

版权声明:本文由龙竞技官网发布于竞技宝竞猜,转载请注明出处:JavaScript中的数组操作介绍_javascript本事_脚本之家