Javascript面向对象基础二-数组

    技术2022-05-20  35

    数组

    我们已经提到过, 对象是无序数据的集合, 而数组则是有序数据的集合, 数组中的数据( 元素) 通过索引(0 开始) 来访问, 数组中的数据可以是任何的数据类型. 数组本身仍旧是对象, 但是由于数组的很多特性, 通常情况下把数组和对象区别开来分别对待创建数组可以用"[]" 操作符, 或者是用Array() 构造函数来new 一个。

    Js 代码

    var array1 = [];  // 创建空数组  

    var array2 = new Array();  // 创建空数组  

    array1 = [1,"s",[3,4],{"name1":"NAME1"}]; //  

    alert(array1[2][1]);  //4    访问数组中的数组元素  

    alert(array1[3].name1); //NAME1  访问数组中的对象  

    alert(array1[8]);   //undefined  

    array2 = [,,]; // 没有数值填入只有逗号, 则对应索引处undefined

    alert(array2.length); //3  

    alert(array2[1]);     //undefined  

    var array1 = [];  // 创建空数组

    var array2 = new Array();  // 创建空数组

    array1 = [1,"s",[3,4],{"name1":"NAME1"}]; //

    alert(array1[2][1]);  //4   访问数组中的数组元素

    alert(array1[3].name1); //NAME1 访问数组中的对象

    alert(array1[8]);   //undefined

    array2 = [,,];  // 没有数值填入只有逗号, 则对应索引处的元素为undefined

    alert(array2.length); //3

    alert(array2[1]);     //undefined

      new Array() 来创建数组时, 可以指定一个默认的大小, 其中的值此时为undefined, 以后可以再给他们赋值. 但是由于javascript 中的数组的长度是可以任意改变的, 同时数组中的内容也是可以任意改变的, 因此这个初始化的长度实际上对数组没有任何的约束力. 对于一个数组, 如果对超过它最大长度的索引赋值, 则会改变数组的长度, 同时会对没有赋值的索引处赋值undefined, 看下面的例子.

    Js 代码

    var array = new Array(10);  

    alert(array.length);   //10  

    alert(array[4]);       //undefined  

    array[100] = "100th";  // 这个操作会改变数组的长度, 同时将10-99 索引对应的值设为undefined  

    alert(array.length);   //101  

    alert(array[87]);      //undefined  

    var array = new Array(10);

    alert(array.length);   //10

    alert(array[4]);       //undefined

    array[100] = "100th";  // 这个操作会改变数组的长度, 同时将10-99 索引对应的值设为undefined

    alert(array.length);   //101

    alert(array[87]);      //undefined

      可以用delete 操作符删除数组的元素, 注意这个删除仅仅是将数组在该位置的元素设为undefined, 数组的长度并没有改变. 我们已经使用过了数组的length 属性,length 属性是一个可以读/ 写的属性, 也就是说我们可以通过改变数组的length 属性来任意的改变数组的长度. 如果将length 设为小于数组长度的值, 则原数组中索引大于length-1 的值都会被删除. 如果length 的值大于原始数组的长度, 则在它们之间的值设为undefined.

    Js 代码

    var array = new Array("n1","n2","n3","n4","n5");  // 五个元素的数组  

    var astring = "";  

    for(var i=0; i<array.length; i++) {           // 循环数组元素  

        astring += array[i];  

    }  

    alert(astring);       //n1n2n3n4n5  

    delete array[3];                   // 删除数组元素的值  

    alert(array.length + "_" + array[3])  //5_undefined   

    array.length = 3;    // 缩减数组的长度  

    alert(array[3]);     //undefined  

    array.length = 8;    // 扩充数组的长度  

    alert(array[4]);     //undefined  

    var array = new Array("n1","n2","n3","n4","n5");  // 五个元素的数组

    var astring = "";

    for(var i=0; i<array.length; i++) {           // 循环数组元素

        astring += array[i];

    }

    alert(astring);       //n1n2n3n4n5

    delete array[3];                   // 删除数组元素的值

    alert(array.length + "_" + array[3])  //5_undefined

     

    array.length = 3;    // 缩减数组的长度

    alert(array[3]);     //undefined

    array.length = 8;    // 扩充数组的长度

    alert(array[4]);     //undefined

      对于数组的其他方法诸如join/reverse 等等, 在这就不再一一举例. 通过上面的解释, 我们已经知道, 对象的属性值是通过属性的名字( 字符串类型) 来获取, 而数组的元素是通过索引( 整数型 0~~2**32-1) 来得到值. 数组本身也是一个对象, 所以对象属性的操作也完全适合于数组.

    Js 代码

    var array = new Array("no1","no2");  

    array["po"] = "props1";  

    alert(array.length);   //2  

    // 对于数组来说,array[0]array["0"] 效果是一样的alert(array[0] + "_" + array["1"] + "_" + array.po);//no1_no2_props1  


    最新回复(0)