Array数组对象

来源:互联网 发布:大数据时代 调研报告 编辑:程序博客网 时间:2024/05/16 18:38

author:  卢~耐


数组类型:伪数组,真数组,空数组

什么是伪数组

1.  不能直接使用数组里的方法的数组都是伪数组。

2.  这个对象必须要有length属性。

3.  如果这个对象的length不为0,那么必须要有按照下标存储的数据

比如:getElementsByTagName(),getElementsByClassName()

eg1:

js代码:

<script>
            var aDiv1=document.getElementsByTagName('div');            length为0

            var  aDiv2=document.getElementsByClassName('div1');      length为0

            alert(aDiv1.length);

            alert(aDiv2.length);

</script>
 

html代码:

<div class="div1"></div>
<div></div>
<div class="div1"></div>
<div class="div1"></div>
<div></div>

如何判断数据是不是伪数组:
     1、不是对象直接干掉
     2、是对象,没有length属性也干掉
     3、有length,值必须是number类型

     4、length值是number类型,并且值不为0,这个对象还得按照下标存储数据


什么是真数组

数组元素在内存中是一个接着一个线性存放的,通过第一个元素就能访问随后的元素,这样的数组称之为“真数组”。

var arr=[ 1,2,3,"a",5];

var arr={[1,2,3],["w",2]}

如何判断数据是不是真数组:
     1、数据 instanceof Array
     2、Object.prototype.toString.call( 数据 ) === '[object Array]'


空数组

var arr=[ ];

var arr={ };

var arr=new Array();


数组的作用:使用单独的变量名存储一系列的值。

数组的定义:                    

1.   new Array();      

     var arr= new Array(1,3,5,2,7,‘ ab ' );
     var arr = new Aaary( 5 );   // 长度为5       
 

2.   Array [ ]                                          

    var  arr = [ 1,3,5,2,7, 'ab ' ];



 数组的三个属性

      length

         JavaScript数组的length属性是可变的。需注意,当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。如下:

<script>var arr=[1,2,5,3,25,8,7,54,60,76];//定义了一个包含10个数字的数组alert(arr.length); //显示数组的长度10arr.length=12; //增大数组的长度alert(arr.length); //显示数组的长度已经变为12 alert(arr[7]); //显示第8个元素的值,为54arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃alert(arr[7]); //显示第8个元素已经变为"undefined"arr.length=10; //将数组长度恢复为10alert(arr[7]); //虽然长度被恢复为10,但第8个元素却无法收回,显示"undefined"</script>

        从上可知,length对象不仅可以显式的设置,也有可能被隐式修改。JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设置为所使用元素索引的值加1。如下例子:
<script>var arr=[1,2,5,3,25,8,7,54,60,76];alert(arr.length);//弹出  10arr[15]=34;alert(arr.length);    //弹出  16</script>

     prototype 属性

返回对象类型原型的引用。prototype 属性是 object 共有的。

objectName.prototype

objectName 参数是object对象的名称。

     constructor 属性

表示创建对象的函数。

object.constructor //object是对象或函数的名称。

说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。



       

数组的操作:

1.  数组的拼接

concat() 方法用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副


<span style="font-size:14px;"><script>var a= [1,2];var b = ["ab", "cd"];var c = ["ef",3];var d = a.concat(b,c);//document.write(d);alert(d);   // 输出 1,2,ab,cd,ef,3 </script></span>

2.  数组的添加,删除

    push()          添加到数组尾部,可多个

    unshift()       添加到数组首部,可多个

    pop()            删除最后一个元素

    shift()           删除第一个元素

    splice()       1.(指定位置)删除    2.(指定位置)插入     3.置换


var arr=[1,2,'a',3,'b'];arr.push(4); //添加到数组尾部   输出:1,2,'a',3,'b',4arr.push(4,6);                  输出:1,2,‘a’,3,'b',4,6
unshift()  //方法可向数组的开头添加一个或更多元素,并返回新的长度。
arr.unshift('c',5);添加到数组首部 输出:'c',5,1,2,'a',3,'b',4
arr.unshift(7,8,9); 
arr.pop(); //删除最后一个元素arr.shift(); //删除第一个元素 alert(arr);            arr.shift(1); //方法用于把数组的第一个元素从其中删除,并返回元素的值。alert(arr);arr.splice(2,3); //删除:从arr[1]后删除三个数 输出:1,2arr.splice(2,0,7,8,9); //插入:在第二个位置arr[1]后插入 7 8 9arr.splice(2,0,6,7);  //在第二个数后删除0个,再插入6,7 输出:1,2,6,7,'a',3,'b'arr.splice(2,2,7,8); //置换:从arr[1]后删除两个数,再插入 7 8

splice()详解

   

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。


slice()

   slice() 方法可从已有的数组中返回选定的元素。



3.排序

sort()

<script type="text/javascript">var arr=[1,4,6,2,55,45,100];//方法1/*alert(arr.sort(function(n1,n2){if(n1<n2){return -1;}else if(n1>n2){return 1;}else if(n1==n2){return 0;}}));*///方法2alert(arr.sort(function(n1,n2){return n1-n2;}));</script>


reverse()  反转元素(最前的排到最后、最后的排到最前),返回数组地址


alert(arr.reverse(function(n1,n2){return n1-n2;}));



数组的类型:

     一维数组

   

    二维数组


    多维数组

0 0