Javascript数组

引用类型的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构。

1)  Object类型

创建Object实例的方法有两种。第一种是使用new操作符后跟object构造函数,如:

var person = new  Object();

person.name = "Nicholas";

person.age = 29;

另外 一种方式是使用对象字面表示法。对象字面是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。

var person = {

name: "Nicholas";

age: 29;}

在Javascript中可以使用方括号表示法来访问对象的属性。在用此方法时,应该将要访问的属性以字符串的形式放在方括号中,如:

alert(person["name"]);   =    alert(person.name)

2) Array类型

ECMAScript数组的每一项可以保持任何类型的数据,而且ECMAScript数组的大小是可以动态调整的。

创建数组:用 var colors =new Array();当然也可以省略 new 操作符,效果是一样的。

还有一种创建方法是使用数组字面量表示法,数组字面量由包含数组项的方括号表示,多个用逗号隔开: var colors =["red","blue","green"];

检测数组:对于一个网页或者一个全局作用域而言,使用 instanceof 操作符就能得到满意的结果:

if (value instanceof Array){

dosomething();  //对数组执行某些操作

};

instanceof操作符是假定在只有一个全局执行环境。对于网页包含多个框架,也就是存在两个及以上不同的全局执行环境,使用两个及以上的 Array 构造函数。在ECMAScript 5 中新增了 Array.isArray() 方法,其目的在于最终确定某个值是不是数组,而不管它是在哪个全局执行环境中创建的:

if (Array.isArray(value)){

dosomething();//对数组执行某些操作

};

转换方法:对所有对象都具有 toLocaleString()、toString()、valueOf() 方法。其中,toString() 方法会返回有数组中的每个值得字符串形式拼接而成的一个由逗号分隔的字符串。而 valueOf() 返回的还是数组:

var colors = ["red","blue","green"];

alert(colors.toString());  //red,blue,green

alert(colors.valueOf());   //red,blue,green

alert(colors);   //red,blue,green

上面最后一行代码直接将数组传递给了alert() 。由于alert() 要接收字符串参数,所以它会在后台调用toString() 方法,由此会得到与调用toString() 方法相同的结果。toLocaleString() 方法经常返回与 toString() 、valueOf() 方法相同的值,但不总是如此。当调用数组的 toLocaleString() 方法时,它会创建一个数组值得以逗号分隔的字符串。而与前两个方法不同的地方是,为了取得每一项的值,调用的是每一项的 toLocaleString() 方法,而不是 toString() 方法:

var person1 = { 

toLocaleString: function(){

return "Nikolaos";

},

toString: function(){

return "Nicholas";

}

};

var person2 = { 

toLocaleString: function(){

return "Grigorious";

},

toString: function(){

return "Greg";

}

};

var people =[person1,person2];

alert(people);  //Nicholas,Greg

alert(people.toString());  //Nicholas,Greg

alert(people.toLocaleString());  //Nikolaos,Grigorios

数组继承的 toLocaleString() 、valueOf() 、toString()方法,在默认情况下都是以逗号分隔的字符串的形式返回数组项。如果使用 join() 方法,可以使用不同的分隔符来构建这个字符串。join() 方法只接受一个参数(用作分隔符的字符串):

var colors = ["red","blue","green"];

alert(colors.join("||"));   //red||blue||green

如果其参数为空,或者传给它undefined,则使用逗号作为分隔符。IE7及更早期版本会错误使用 undefined 作为分隔符。

栈方法:栈(LIFO),后进先出的数据结果,栈中项的插入(推入)和移除(弹出),值发生在栈的顶部,方法为 push()与pop();

队列方法:队列数据(FIFO),先进先出的数据结构。shift(),能移除数组中的第一项并返回值,同时将数组长度减1。搭配push()使用。

还有一个unshift() , 刚好与 shift() 相反。

重排序方法:数组中两个直接用来重排序的方法: reverse()(反转) 和 sort()(升序)(一般搭配函数使用)

操作方法:concat() 与 slice() 

位置方法: indexOf() 与 lastIndexOf()

迭代方法: every() 、filter()、 forEach() 、map() 、some()

归并方法: reduce() 与 reduceRight()

 

附Javascript数组思维导图:

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。