js基础--javascript基础概念之数组

在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别。js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值。js数组大小(长度)是可以调整的。可以随着数据的添加自动增长数组长度。

创建数组:

一.数组字面量

数组字面量由一对包含数组项的方括号[]表示。

var array = [
'kin',
'cheong',
'change',
'hello',
'haha',
'hi'
];
//创建了包含6个值的数组、

创建一个空数组:

var array = [];



创建数组错误方法:

var array = [,,,];
//创建了数组长度为3的数组。



如果你:

var array = ['kin','hello',];//在IE中创建的也是长度为3的数组。分别是kin,hello undefined

在chrome中是创建长度为2的数组。

 

二.使用构造函数

var array = new Array();



如果想要给数组指定保存的项目数量,可以给构造函数传递该数量(长度)。如:

var array = new Array(10);
//能够保存10个项目长度的数组。



也可以使用构造函数创建数组时直接给数组传递值。如:

var array = new Array(‘kin’,’cheong’,’zhang’);
//传递了三个值到新创建数组。



使用构造函数创建数组可以省略new 操作符。如:

var array = Array('kin');



数组的访问、设置、新增。

访问:

对于这样一个数组:

var array = ['kin','cheong','hello','haha','hi'];//数组长度为4(以0为数字索引)
alert(array[0]);//kin读取数组中0位的值。
alert(array[5]);//undefined数组中没有定义的值。为undefined类型。

方括号中的数值为要访问数组的值,如果方括号中的数组小于数组中的项值,那么则会访问到数组中对应的项。


关于读取数组中最后的一个值,你也可以这样:

alert(array[array.length-1]);
//hi  因为数组长度值比数组项值大一。


设置|新增

数值的length属性不单单可以用来访问数组的具体某一项值,还可以对数值进行添加修改数组值。如:

array[1] = 'zhang';//将数组中第2项值修改为’zhang’ 值
array[5] = 'new value'//像这个数组中没有的项数,则对数组进行新增一个项值。数组长度自动会增加一。




另外。数组可以使用length属性对数值进行移除数值项。如:

array.length = 3;
// 数组中只有3个项值。其他项将会删除。



由于数组的最后一个位置始终是length-1,所以下一个新的数值项就是length。每当数组末尾添加一个项后。起length属性都会自动更新以反应这一变化。当然你也可以像下面一样在数组末尾添加一个新值。

array[array.length]  =  'new value'



但是,假如当你将数组的length属性设置为10,你在数组后面新添加的数值项将是11.如

var array = ['kin','cheong','hello','haha','hi'];
array.length = 10;
array[array.length] = 'new';
alert(array.length);//11
alert(array[8]);//undefined  那些没有的数组项
array[100] = 'value';//在数组第101个数组项中添加一个值。
alert(array.length)//数组的长度自动变成101
alert(array[80]);//当然,中间没有设置的值都将会变成undefined 类型

数组的检测

使用 instanceof  检测;

如:

var array = ['kin','cheong','hello','haha','hi'];
alert( array  instanceof  Array);// array  是 Array 类型?返回的答案是true


当是,使用instanceof 有一个弊端。它只能有一个全局环境。如果网页中包含多个框架那么,就是说页面中有多个全局环境了,而存在两个以上不用的Array 构造函数,如果一个框架像另一个框架传入一个数组。那么,传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。新的方法可以解决这个问题。

如下: 

var array = ['kin','cheong','hello','haha','hi'];
alert(Array.isArray(array));//true


Array.isArray(数组名称)  支持这个方法的浏览器有IE9 Firefox safari ……


数组转换方法

在js中  所有对象都具有toLocaleString() 、 toString() 、 valueOf() 方法。

在数组中  调用toString()方法会由数组中每个值的字符串拼接成由逗号分隔的一个字符串。如:

var array = ['kin','cheong','hello','haha','hi'];
alert(array.toString());//'kin','cheong','hello','haha','hi' 这是一个字符串。由‘,’ 拼接。



调用valueOf() 方法返回的则依然是一个数组。但是他为了这个数组中每一个值都调用了一遍toString() 方法。然后输出的依然是这个数组。

如:

var array = ['kin','cheong','hello','haha','hi'];
alert(array.valueOf());//'kin','cheong','hello','haha','hi'

如果直接使用

alert(array);


和使用toString() 方法是几乎一样的效果的。因为数组直接传递到了alert  而alert 会在后台调用toString() 方法。然后alert。