首页 > 代码库 > javascript那些事儿(一)javascript数组用法总结(1)

javascript那些事儿(一)javascript数组用法总结(1)

/*
1、js数组跟其他语言的数组一样,都是数据的有序列表,但不同的是,js数组的每一项可以保存任何类型的数据。
并且js数组的大小是可以动态调整的。

2、创建数组方式:
*/

//(1)使用Array构造函数创建数组:
//var names = new Array();

//创建length=30的数组
//var names = new Array(30); //如果预先知道数组长度,可直接传入数值 
//alert(names.length);  //30

//也可以像Array构造函数传递数组应该包含的项:
//var names2 = new Array("zhangsan","lisi","wangwu");
//alert(names2); //zhangsan,lisi,wangwu

//给Array构造函数传递一个值也可以创建数组
//var ages = new Array(2);  //创建包含两项的数组
//var ages = new Array("11"); //创建包含1项,即字符串“11”的数组

//可以省略new操作符
//var books = Array(2);//创建包含两项的数组
//var books = Array("books1");创建包含1项,即字符串“books”的数组


//(2) 使用数组字面量表示法创建数组:数组字面量由一对包含数组项的方括号表示,多个数组项之间用逗号隔开
//var names = ["zhangsan","lisi","wangwu"];  //创建一个包含3个字符串的数组
//var names = []; // 创建一个空数组

//在数组最后一项添加逗号的结果:

//在其他浏览器中会创建包含2项且值分别为"zhangsan","lisi"的数组
//在IE中,names会创建包含3项,值分别为“zhangsan","lisi",undefined的数组,
//原因在于IE8及之前版本的ECMAScript实现在数组字面量方面存在BUG
//var names = ["zhangsan","lisi",];
//alert(names); //IE9下报错,IE8及以下:zhangsan,lisi,
//alert(names.length);


//像这种省略值情况下,每一项都是undefined值。
//var names = [,,,,,];
//alert(names.length); //5:在及其他浏览器中创建包含5项的数组
//alert(names.length);  // 6:  在IE版本中创建包含6项的数组
//alert(names[5]); //undefined


//读取设置数组值
//var colors = ["red","green","blue"];
//alert(colors[0]);  //显示第一项
//colors[2] = "pink";  //修改第三项
//alert(colors); // red,green,pink

//colors[3] = "black"; //增加第四项,设置某个值的索引超过了数组长度,则数组长度自动加1
//alert(colors); //red,green,pink,black


//3、length属性:>=0  ,length属性不是只读的,可以通过设置length属性来从数组末尾移除项或向数组中添加项
//var colors = ["red","green","blue"];
//colors.length = 2;  
//alert(colors[2]);  //undefined

//var colors = ["red","green","blue"];
//colors.length = 4;  
//alert(colors[3]);  //undefined

//var colors = ["red","green","blue"];
//colors[colors.length] = "black";
//colors[colors.length] = "pink";
//alert(colors);  //red,green,blue,black,pink

//var colors = ["red","green","blue"]
//colors[99] = "black";
//alert(colors.length); // 100  ,colors[3]到color[98]都是undefined

//4、数组类型判断 

//对于一个网页或一个全局作用域,instanceof假定单一的全局执行环境
//var colors = ["red","green","blue"];
//var obj = {};
//alert(colors instanceof Array); //true
//alert(obj instanceof Array); // false

//对于网页中包含多个框架,则就存在多个不同的全局执行环境,从而存在多个不同版本的Array构造函数,
//那么从一个框架向另一个框架传入一个数组,则传入的数组与第二个框架中的数组则分别具有不同构造
//为了解决这个问题,则须采用Array.isArray()方法

//var colors = ["red", "green", "blue"];
//var obj = {};
//alert(Array.isArray(colors)); //true
//alert(Array.isArray(obj)); //false

//兼容性:支持isArray方法的浏览器有: IE9+,其他浏览器


//5、toString(): 返回数组每一项用逗号分隔的字符串,调用数组每一项的toString()方法
//valueOf(): 返回数组
//var colors = ["red", "green", "blue"];
//alert("toString="+colors.toString()); //red,green,blue
//alert(colors); //alert接收字符串参数,传递给它的是数组,因此在后头会调用Array的toString()方法
//alert("valueOf="+colors.valueOf()); 
//alert(Array.isArray(colors.valueOf())); //true

//toLocaleString():  返回数组每一项用逗号分隔的字符串,调用每一项的toLocaleString()方法,而不是toString()方法
/*
var book1 = {
	toString : function(){
		return "book1.toString()";
	},

	toLocaleString : function(){
		return "book1.toLocaleString()";
	}

};
var book2 = {
	toString : function(){
		return "book2.toString()";
	},

	toLocaleString : function(){
		return "book2.toLocaleString()";
	}

};
var book = [book1,book2];
alert(book); //book1.toString(),book2.toString()
alert(book.toString); //function toString(){[natice code]}
alert(book.toString());//book1.toString(),book2.toString()
alert(book.toLocaleString());//book1.toLocaleString(),book2.toLocaleString()
*/

//join(): 接收一个作为分隔符的参数, 返回由分隔符分隔的字符串,
//var colors = ["red^", "green^", "blue^"];
//alert(colors.join(','));//red^,green^,blue^
//alert(colors.join('|'));//red^|green^|blue^
//alert(colors.join()); //默认以逗号分隔: red^,green^,blue^
//alert(colors.join(undefined));//在IE8+及其他浏览器中显示:red^,green^,blue^
//alert(colors.join(undefined)); //在IE7及以下版本显示:red^undefinedgreen^undefinedblue^

//如果数组中的某一项值为null或undefined,则该值在join()\valueOf()\toString()\toLocaleString()都返回空字符串
//var names = ["zhangsan",null,undefined,"lisi"];
//alert(names); //zhangsan,,,lisi


//push():  接收任意数量参数,添加到数组末尾,返回修改后数组长度
//var names = new Array();
//var num = names.push("zhangsan","lisi");
//alert(num); //2
//num = names.push("wangwu");
//alert(num); //3
//var item = names.pop();
//alert(item); //wangwu

//shift() : 移除数组第一项并返回
//var colors = ["red","green","blue"];
//var item = colors.shift();  //移除第一项并返回
//alert(item);
//alert(colors.length); //2

//unshift() : 在数组前端添加任意个项并返回数组新长度,对于IE7及更早版本,unshift返回undefined而不是数组长度
//var colors = ["red","green","blue"];
//var count = colors.unshift("aaa","bbb");
//alert(colors);//"aaa","bbb","red","green","blue"
//alert(count);//5











javascript那些事儿(一)javascript数组用法总结(1)