Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1017|回复: 0

javascript--有关数组

[复制链接]

该用户从未签到

发表于 2011-10-12 11:13:15 | 显示全部楼层 |阅读模式
数组
我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,

数组中的数据(元素)通过索引(从0开始)来访问,数组中的数据可以是任何的数据类型.数组本身仍

旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别开来分别对待.

创建数组可以用"[]"操作符,或者是用Array()构造函数来new一个.

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(typeof(array1[2]));
alert(typeof(array1[3]));
alert(array1[2] instanceof Array);
alert(array1[3] instanceof Object);
alert(array1[3] instanceof Array);
alert(array1[2] instanceof Object);//说明数组是对象,单对象不是数组
function aa (){}
alert(aa instanceof Object);//说明function 也是对象

用new Array()来创建数组时,可以指定一个默认的大小,其中的值此时为undefined,以后可以再给他

们赋值.但是由于javascript中的数组的长度是可以任意改变的,同时数组中的内容也是可以任意改

变的,因此这个初始化的长度实际上对数组没有任何的约束力.对于一个数组,如果对超过它最大长

度的索引赋值,则会改变数组的长度,同时会对没有赋值的索引处赋值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.

var array = new Array("n1","n2","n3","n4","n5");  //五个元素的数组   
var astring = "";   
for(var i=0; i<array.length; i++) {           //循环数组元素   
    astring += array;   
}   
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)来得到值.数组本身也是一个对象,所以对象属性的操作也完全

适合于数组.

var array = new Array("no1","no2");   
alert(array.length); //2
array["po"] = "props1";   
alert(array.length);   //2   
//对于数组来说,array[0]同array["0"]效果是一样的(?不确定,测试时如此)   
alert(array[0] + "_" + array["1"] + "_" + array.po + "_" + array

['po']);//no1_no2_props1  

因为 firefox 忽略逗号后面为空的情况了。。。如 a=[1,2,] 在firefox 只有a.length==2个 ie里

认为还有第三个元素是undefined.浏览器差异把。一个逗号。。。。呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-11-5 11:29 , Processed in 8.642848 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表