Object类型
var person = new Object();
person.name = 'Jayson';
//对象字面量表示法,不会调用Object构造函数(Firefox3及更早版本会)
var person = {
name : 'Jayson'
};
var student = {};
student.name = 'Jayson';
//访问时可以使用两种表示法
person.name;
person['name'];
//方括号表示法可以通过变量来访问
var name = 'name';
person[name];
Array类型
数组每一项可以保存任何类型的数据,数组大小是可以调整的,数组最多能有4294967295个项
var colors = new Array();
var colors = new Array(5);
var colors = new Array('red','blue');
//数组字面量表示法,不会调用Array构造函数(Firefox3及更早版本会)
var colors = [];
var colors = ['red','blue',,,,]; //会创建5项的数组,IE8及更早会创建6项,不要这样定义
var colors = ['red','blue'];
//访问
colors[0];
colors[1] = 'green';
colors[99] = 'whrite'; //length为100
colors[colors.length] = 'black'; //在末尾添加一项
colors.length;
colors.length = 4;
- 检测数组
value instanceof Array
Array.isArray(value) (ECMAScript5新增) 转换方法
var p1 = { toLocaleString : function(){ return 'Jayson'; }, toString : function(){ return 'hu'; } } var p2{ toLocaleString : function(){ return 'H'; }, toString : function(){ return 'AY' } } var p = [p1,p2]; alert(p); //hu,AY alert(p.toString()); //hu,AY alert(p.valueOf()); //hu,AY alert(p.toLocaleString()); //Jayson,H
- 栈方法
count = array.push(‘red’,’green’); //推入两项(数组末尾)
item = array.pop(); //取出最后一项 - 队列方法(两种)
array.push();
item = array.shift(); //取出第一项
count = array.unshift(‘red’,’blue’); //推入两项(数组前端),IE7或更早返回undefined
array.pop(); 重排序方法
array.reverse(); //反转数组顺序
array.sort(compare); //比较每一项toString()得到的字符串,升序排列function compare(v1,v2){ if(v1<v2){ return -1; }else if(v1>v2){ return 1; }else{ return 0; } } var array = [1,5,8,10,16]; array.sort(); alert(array); //1,10,16,5,8 array.sort(compare); alert(array) //1,5,8,10,16
操作方法
- concat()
var array = [‘red’];
var array2 = array.concat(‘blue’,[‘black’,’green’]); //[red,blue,black,green] - slice(start[,end])
var array = [‘red’,’blue’,’green’,’black’];
var array2 = array.slice(1,3); //[blue,green]
var array3 = array.slice(-2,-1); //[green] splice(start,length[,new])
var array = ['red','blue','green','black']; var removed = array.splice(0,2); alert(removed); //red,blue alert(array); //green,black var removed = array.splice(1,1,'white','yellow'); alert(removed); //black alert(array); //green,white,yellow
- concat()
位置方法
- indexOf(search[,fromIndex]) 从前往后搜
lastIndexOf(search[,fromIndex]) 从后往前搜
找到返回在数组中的位置,否则返回-1
比较search和数组的每一项时会使用全等于操作符var person = {name:'hay'}; var peopole = [{name:'hay'}]; alert(people.indexOf(people)); //-1 morePeople = [person]; alert(morePeople.indexOf(person)) //0
- 迭代方法 (ECMAScript 5 新增)
- every(function(item当前值,index,array){}) 如果function每一项返回true,则返回true
- some(…) 如果function任一项返回true,则返回true
- filter(…) 返回function返回true的项组成的数组
- map(…) 返回function每次调用结果组成数组
- forEach(…) 没有返回值
缩小方法 (ECMAScript 5 新增)
- reduce(function(prev前一项值,cur当前值,index,array){}) 从左遍历到右
reduceRight(…) 从右遍历到左
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev,cur,index,array){ return prev + cur; }); alert(sum); //15