js数组

 

Array 对象属性

属性描述
constructor 返回对创建此对象的数组函数的引用。
length 设置或返回数组中元素的数目。
prototype 使您有能力向对象添加属性和方法。

Array 对象方法

方法描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值

1.    数组概述

  1. 数组是一种数据存储形式
  2. 数组元素是可以被索引的
  3. c.       数组中的元素索引是从0开始的,并且按照每个元素的位置依次递增
  4. 我们是通过方括号中的索引值来访问数组元素的
  5. e.       数组能存储任何类型的数据,包括另一个数组

2.    创建数组

2.1 申明一个数组:

第一种方式:

            可以申明一个空的数组变量:var a = [] ;

            如果要定义一个带若干个元素的数组,也可以写成: var a = [2,6,3];

第二种方式:

            Array()是一个用来构建数组的内建构造器函数,我们可以通过它来完成数组的申明:var a = new Array();,它与第一种方式是等效的

            该方法创建时也可以带若干个元素:var a = new Array(2,4,6,’four’);

            如果我们传递给该构造器的是一个单独数字,该数值会被认为是数组的长度

2.2 数组赋值

         上述数组在定义过程中赋值的方式,叫做静态赋值,相对应的,还有动态赋值:

         比如先声明一个数组:var a = [];

         再给数组赋值: a[0] = 3;

                                        A[1] = 5;

                                        …

         数组里面也可以存放数组:

                   a[2] = [‘a’,’c’];

2.3 内存分配

        

变量num,bol,str为基本数据类型,它们的值,直接存放在栈中,obj,person,arr为引用数据类型,他们的引用变量存储在栈中,指向于存储在堆中的实际对象。

         栈中存放的数据,必须先知道数据的大小和生存期,一般用来存放基本数据类型;堆中的数据,可以动态分配大小,一般用来存放引用数据类型

3.    数组元素的获取

定义一个数组:var a = [4,6,9];

可以使用for循环:

for(var i=0;i<arr.length;i++){

alert(arr[i]);

}

也可以采用while循环:

var i = 0 ;

while(i<arr.length){

    alert(arr[i]);

    i++;

}

还可以是do-while(此种方式需要先执行再判断,不推荐使用):

var i = 0 ;

do{

    alert(arr[i]);

    i++;

}while(i<arr.length);

         还可以使用foreach循环:

for(var i in arr){

    alert(arr[i]);

}

4. 数组元素的增,删,改

我们可以通过索引来更新数组中的元素:

           var a = [4,2,6];

           a[2] = 23;

         对于上面的数组,也可以:a[5] = 12;

         其中3,4号没有数据,为undefined

         删除元素:delete a[1];1号位上的元素被删除,但空间还在,所以变成undefined

5.    其他方法

  1. push()方法,在数组的末端添加一个新的元素,返回改变后的数组长度

    a.push(“aa”);

  1. pop()方法,移除最后一个元素,返回被移除的元素,效果相当于a.length--;

    a.pop();

  1. sort()方法,用于给数组排序,返回排序后的数组

      var b = a.sort();

                 此时a和b指向同一个数组

      arr.sort(function(a,b){return b-a})//从大到小

      arr.sort(function(a,b){return a-b})//从小到大

  1. join()方法,用指定字符串连接数组元素,返回该拼接的字符串

      a.join(“-“);

  1. splice()方法,用来修改目标数组,它会移除并返回指定切片,并且在可选情况下,它还会用指定的新元素来填补被切除的空缺。

该方法的头两个参数所指定的是要移除切片的首尾索引位置,其他参数则用于填补的新元素值:

         var a = [3,6,2,7,9];

         var b = a.splice(1,2,100,101,102);

                   结果,数组a变为 [3,100,101,102,7,9]

                              数组b变为[6,2]

                   用于填补空缺的新元素也是可选的,可以直接跳过:

                            var b = a.splice(1,3);

                   此时,a结果变为[3,9]

                              b结果变为[6,2,7]

         另外,还可以在开头添加两个元素:var b = a.unshift("aa","bb");

           此时a变为[“aa”,”bb”,3,6,2,7,9]

              b为修改后的a数组的长度

    也可以删除开头的一个元素: a.shift();

    还有reverse()方法,可以反转数组并返回该数组:var b = a.reverse();

6.    数组排序

6.1 冒泡排序

         逐个比较两个元素,大的放右边:

 

 

var a = [3,6,2,7,9];

for(var i=0;i<a.length-1;i++){

    for(var j=0;j<a.length-1-i;j++){

       if(a[j]>a[j+1]){

           var temp = a[j];

           a[j] = a[j+1];

           a[j+1] = temp;

       }

    }

}

6.2 选择排序

         每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最(前)后,知道全部记录排序完毕

var a = [3,6,2,7,9];

for(var i=0;i<a.length-1;i++){

    for(var j=i+1;j<a.length;j++){

       if(a[i]>a[j]){

           var temp = a[i];

           a[i] = a[j];

           a[j] = temp;

       }

    }

}

posted @ 2016-07-12 19:57  loewe0202  阅读(120)  评论(0编辑  收藏  举报