除了Object之外,Array类型恐怕是ECMAScrip中最常用的类型了。而且,ECMAScript中的数组与其他多数语言中的数组有着很大的区别。虽然ECMAScript数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,EMCAScript数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象,以此类推。而且,ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
JavaScript 本地对象和内置对象。
Array 对象,Array 对象用于在单个的变量中存储多个值。
创建Array对象的语法:
1 2 3 new Array(); new Array(size); new Array(element0,element1m,...,elementn);
参数
参数size是期望数组元素个数。返回的数组,length字段将被设为size的值。 参数element…,elementn是参数列表。当使用这些参数来调用构造函数Array()时,新创建的数组的元素就会被初始化为这些值。它的length字段也会被设置为参数的个数。
返回值
返回新创建并被初始化了的数组。 如果调用构造函数Array()时没有使用参数,那么返回的数组为空,length字段未0。 当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为undefined的数组。 当其他参数调用Array()时,该构造函数将用参数指定的值初始化数组。 当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。
Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用。 length 设置或返回数组中元素的数目。 prototype 使您有能力向对象添加属性和方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 "use strict"; var obj = new Array(); obj = ["ab",2,3,5,6,7,8,9,10]; console.log("new Array() 创建数组:"+obj); var type = Array.isArray(obj); console.log("Array.isArray(obj) 检测数组类型:" + type); console.log("constructor 数组属性:"+obj.constructor); console.log("length 数组属性:" + obj.length); Array.prototype.name = 10 Array.prototype.changed = function () { for(var i = 0; i < this.length; i++ ){ var tp = typeof(this[i]); if(tp === "string"){ this[i] = this[i].toUpperCase(); } if(tp === "number"){ this[i] = this[i]++; } else{ this[i] = this[i]; } } } obj.changed(); console.log("prototype 数组属性:" + obj.name + "|" + obj);
Array对象方法 方法 描述 concat() 连接两个或更多的数组,不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 pop() 删除并返回数组的最后一个元素。 push() 向数组的末尾添加一个或更多元素,并返回新的长度。 reverse() 颠倒数组中元素的顺序。 shift() 删除并返回数组的第一个元素。 slice() 从某个已有的数组返回选定的元素。 sort() 对数组的元素进行排序。 splice() 删除元素,并向数组添加新元素。 toSource() 返回该对象的源代码。 toString() 把数组转换为字符串,并返回结果。 toLocaleString() 把数组转换为本地数组,并返回结果。 unshift() 向数组的开头添加一个或更多元素,并返回新的长度。 valueOf() 返回数组对象的原始值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 var a = Array("张三", "李四"); var b = new Array("王五", "陈六"); var c = a.concat(b) console.log("concat() 数组方法:原始值——" + a + "|返回值——" + c); console.log("join() 数组方法:" + c.join('|')); console.log("pop() 数组方法:" + c.pop() + "|删除后的值——" + c); console.log("push() 数组方法:" + c.push("赵七") + "|追加后的值——" + c); console.log("reverse() 数组方法:" + c.reverse()); console.log("shift() 数组方法:" + c.shift() + "|删除后的值——" + c); console.log("slice() 数组方法:" + c.slice(-2)); console.log("sort() 数组方法:" + c.sort()); console.log("splice() 数组方法:" + c.splice(2,1,"替换") + "|删除后的值——" + c); // 只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。 // console.log("toSource() 数组方法:" + c.toSource()); console.log("toString() 数组方法:" + typeof(c.toString()) + " | " + typeof(c)); console.log("toLocaleString() 数组方法:" + typeof(c.toLocaleString()) + " | " + typeof(c)); console.log("unshift() 数组方法:" + c.unshift("开头","添加") + "添加后的值——" + c); console.log("valueOf() 数组方法:" + c.valueOf());
任何值得做的事就值得把它做好。- Whatever is worth doing is worth doing well.