JavaScript Array对象属性与方法

除了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());