今天学习了一下《javascript权威指南(第6版)》的第七章:数组
一、数组的创建:
数组的创建有3种方法:
var colors = new Array(3);//可以省略new var colors = Array("red","blue","green"); var colors = ["red","blue","green"];
数组直接量可以是表达式、对象直接量、数组直接量,如果省略数组中的某项,则该项的值为undefined;
var base = 1024; colors = [base,base+1,base+2,base+3];//数组直接量可以是表达式 var arr = [[1,{x:1,y:2}],[2,{x:3,y:4}]];//数组直接量可以是对象字面量、数组字面量 var a = [1, ,3];//a数组有3个元素,中间那个元素为undefined; var b =[, ,];//数组允许最后一个逗号存在,因此b数组只有2个元素(IE8以下中不允许最后一个逗号存在,因此会认为是3个元素),都是undefined;
二、数组元素的读写:
读写一个数组元素主要依靠索引。当然,索引有索引的规矩:
colors[4] = "pink";//为数组colors添加一项并设置值; colors[5] = "navy";//为数组colors添加一项并设置值; colors["5"] = "yellow";//数组的索引字符串"5"将会被转换为数字5,会覆盖上一行设置的colors[5] = "navy",最后colors[5]和colors["5"]的值都为"yellow",而不是"navy";
索引值类型既可以是字符串也可以是数字(负数和小数将会转换为字符串,假小数会转换为整数数字),索引值的类型和值将决定其创建的数组元素在数组中的排序先后,具体见下面这个例子:
var a = []; a[3] = 3; a[1.23] = "1.23";//索引值1.23将会被转换为字符串“1.23”,即便它被转换成了字符串1.23,由于其值是数值,因此也会排在索引值为字母的元素前面; a[2] = "2"; a[1] = "1"; a[-7] = "-7";//负数索引将会被转换为字符串,从而按照先定义排前面,后定义排后面的规则来排序 a["0"] = "0"; a["Y"] = "Y"; a[-5] = "-5"; a[1000] = 1000; a[1.000] = "1.000";//1.000将会被转换为数字1,因此将会覆盖前面的a[1] = "1"; a["A"] = "A";//索引为字母A的元素并不会排在先前定义的索引为字母Y的元素前面,这表明以字母为索引的元素并不会依据字母先后顺序决定排序先后,而是依据谁先定义; a[17] = 17; a[16] = "16";//索引为16的元素定义在索引为17的元素后面,但在数组中排序却在索引为17的元素前面,这证明索引为数字时,元素排序先后由数字大小决定,小在前,大在后。 console.log(a); //输出结果为:["0", "1.000", "2", 3, 16: "16", 17: 17, 1000: 1000, 1.23: "1.23", -7: "-7", Y: "Y", -5: "-5", A: "A"]
原文:http://www.cnblogs.com/macliu/p/4369780.html