博客列表 >Array的使用

Array的使用

floristdragon
floristdragon原创
2017年08月05日 03:01:55838浏览

一、数组的定义

定义数组有如下几种方式:

1、使用new关键字定义空数组对象Array(): var arr = new Array();

2、使用new关键字定义具有长度的数组: var arr = new Array(19);

3、使用new关键字直接初始化数组: var arr = new Array(1,2,3,4,5);

4、使用字面量定义空数组:var arr = [];

5、使用字面量初始化数组:var arr = [1,2,3,4];

PS:创建数组时尽量使用字面量([]或[1,2,3])的方式,少用new Array()的方式进行创建。因为[]的性能略高,因为代码短。

二、数组的属性length

length既可以获取,也可以设置,从而改变数组

var arr = [1,2,4,5,6];

console.log(arr); //[1,2,4,5,6]

//获取length

console.log(arr.length); //5

//设置length

arr.length = 4;

console.log(arr); //[1,2,4,5]

//快速清空数组

arr.length = 0;

console.log(arr); //[]

console.log(arr.pop());    //undefined


三、数组的方法

1、数组元素头部尾部的添加、删除(不创建新数组,而是直接修改原有的数组

(1)数组元素的添加:

array.push(value1,value2,...);    //在数组的尾部依次添加一个或多个数组元素。直接修改array,而不是创建一个新的数组

array.unshift(value1,value2,...);    //在数组的头部添加一个或多个数组元素。。该方法的第一个参数将成为数组的新元素0,而第二个参数则将成为新元素1,以此类推。注意,unshift()不创建新数组,而是直接修改原有的数组

参数value1,value2,...:可以是数字,字符,数组;

(2)数组元素的删除:

array.pop();    //删除数组的最后一个元素。如果数组已经为空,则pop()不改变数组,返回undefined

array.shift();    //删除数组的第一个元素。如果数组是空的,shift()将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组

    var arr_1 = [1,2,3];

     //在数组的尾部添加一个或多个值

     arr_1.push(4,5,6);

     console.log(arr_1);     //[1,2,3,4,5,6]

     //删除数组尾部最后一个元素

     arr_1.pop();

     console.log(arr_1);     //[1,2,3,4,5]

     //删除数组头部的第一个元素

     arr_1.shift();

     console.log(arr_1);     //[2,3,4,5]

     //在数组头部添加一个或多个值

     arr_1.unshift(-1,0);

     console.log(arr_1);    //[-1,0,2,3,4,5]

     arr_1.length = 0;

     console.log(arr_1.pop());     //undefined

     console.log(arr_1.shift());     //undefined

     console.log(arr_1);     //[]

2、在数组中插入、删除、替换元素:splice(start,deleteCount,value1,value2,...)

描述:splice()方法将删除从start开始(包括start所指的元素在内)的零个或多个元素,并且用参数列表中声明的一个或多个value值来替换那些被删除的元素。位于插入或删除的元素之后的数组元素都会被移动,以保持它们与数组其他元素的连续性。

(1)start:开始插入和(或)删除的数组元素的下标;

(2)deleteCount:从start开始,包括start所指的元素在内要删除的元素个数。该参数可选,若没有指定它,splice()将删除从start开始到原数组结尾的所有元素

(3)value1,value2,...:从start开始要插入数组的零个或多个元素。

    //splice():插入、删除、替换,先删除后插入

     var arr_2 = [-1,0,1,2,3,4]

     //在数组中删除指定的元素

     arr_2.splice(4);

     console.log(arr_2);     //[-1,0,1,2]

     arr_2.splice(1,2);

     console.log(arr_2);     //[-1,2]

     //在数组中指定位置插入指定的元素

     arr_2.splice(1,0,3,4,5);

     console.log(arr_2);     //[-1,3,4,5,2]

     //在数组中对指定的数组元素进行替换

     arr_2.splice(1,2,8,9);

     console.log(arr_2);     //[-1,8,9,5,2]

3、数组的连接

(1)array.concat(value1,value2,...);    //连接数组。该方法将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。若要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组

参数value1,value2,...:可以任意多个,可以是数字,字符,数组(一维数组、二维数组...)等

(2)array.join(separator);    //将数组元素通过某种分割符连接起来以构建一个字符串。返回生成的字符串

参数separator:指定在返回的字符串中用于分隔数组元素的字符或字符串,可选。若省略了这个参数,用逗号作为分隔符

    //数组的连接

     var arr_3 = ["a","b","c"];

     var arr_4 = ["e","f","g"]; 

     console.log(arr_3.concat(arr_4));     //["a","b","c","e","f","g"]

     console.log(arr_3.concat("m","n"));     //["a", "b", "c", "m", "n"]

     console.log(arr_3.concat(arr_4,["h","i","j"]));     //["a", "b", "c", "e", "f", "g", "h", "i", "j"]

     console.log(arr_3.join("-"));     //a-b-c 字符串

     console.log(arr_3.join(""));     //abc 字符串

     console.log(arr_3.join(" "));     //a b c 字符串

     console.log(arr_3.join());     //a,b,c 字符串

4、数组的排序:array.sort(orderfunc);    //对数组元素进行排序

A、描述:sort()方法将在原数组上对数组元素进行排序,即排序时不创建新的数组副本。若调用方法sort()时没有使用参数,将按字母顺序(确切地说是按照字符编码的顺序,是一种升序的方式)对数组中的元素进行排序。为实现排序,sort()方法调用每个数组项的toString()特型方法, 然后比较得到的字符串来确定排序即使数組中的每一项都是数值,sort()方法比較的也是字符串

B、参数orderfunc:可选,用来指定按什么顺序进行排序的函数

C、比较函数:

如果想按照别的顺序进行排序,就必须提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:

a、如果根据你的评判标准,a小于b,在排序后的数组中a应该出现在b之前,就返回一个小于0的值。

b、如果a等于b,就返回0。

c、如果a大于b,就返回一个大于0的值。

注意,数组中undefined的元素都排列在数组末尾。即使你提供了自定义的排序函数也是这样,因为undefined值不会被传递给你提供的orderfunc。

(1)对英文字符进行排序:

    var a;

    var arr_5 = ['height','width','float','color','margin','undefined',undefined,a];

    console.log(arr_5.sort());     // ["color", "float", "height", "margin", "undefined", "width", undefined, undefined]

(2)未使用比较函数对数值进行排序:

    var arr_6 = [34,9,0,15,121,56];

     console.log(arr_6.sort());     //[0,121,15,34,56,9]

(3)使用比较函数对数值进行排序:

方法一:匿名函数

升序

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(function (value1,value2) {

         if (value1 < value2) {

              return -1;     //此处不一定是-1,只要是负数即可

         } else if (value1 > value2) {

             return 1;     //此处不一定是1,只要是正数即可

         } else {

              return 0;

         }

     });

     console.log(arr_6);     //[0, 9, 15, 34, 56, 121]

可以改成:

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(function (value1,value2) {

         return value1 - value2;

     });

     console.log(arr_6);     //[0, 9, 15, 34, 56, 121]

降序:只要交换比较函数的返回值即可

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(function (value1,value2) {

         if (value1 < value2) {

              return 1;     //此处不一定是1,只要是正数即可

         } else if (value1 > value2) {

             return -1;     //此处不一定是-1,只要是负数即可

         } else {

              return 0;

         }

     });

     console.log(arr_6);     //[121, 56, 34, 15, 9, 0]

可以改成:

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(function (value1,value2) {

         return value2 - value1;

     });

     console.log(arr_6);     //[121, 56, 34, 15, 9, 0]

方法二:调用函数

升序

    function compare(value1,value2) {

         if (value1 < value2) {

             return -1;     //此处不一定是-1,只要是负数即可

         } else if (value1 > value2) {

             return 1;     //此处不一定是1,只要是正数即可

         } else {

             return 0;

         }

     }

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(compare);

     console.log(arr_6);     //[0, 9, 15, 34, 56, 121]

可以改成:

    function compare(value1,value2) {

         return value1 - value2;

     }

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(compare);

     console.log(arr_6);     //[0, 9, 15, 34, 56, 121]

降序:只要交换比较函数的返回值即可

    function compare(value1,value2) {

         if (value1 < value2) {

             return 1;     //此处不一定是1,只要是正数即可

         } else if (value1 > value2) {

             return -1;     //此处不一定是-1,只要是负数即可

         } else {

             return 0;

         }

     }

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(compare);

     console.log(arr_6);     //[121, 56, 34, 15, 9, 0]

可以改成:

    function compare(value1,value2) {

         return value2 - value1;

     }

     var arr_6 = [34,9,0,15,121,56];

     arr_6.sort(compare);

     console.log(arr_6);     //[121, 56, 34, 15, 9, 0]




声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议