Array 对象用于在单个的变量中存储多个值。
一、数组创建
创建Array对象的语法有三种:
1. var arr = new Array();
2.var arr1 = new Array(size);
3.var arr2 = new Array(ele0,ele1…);
说明:第一种创建方式返回的是一个空数组,length字段为0
第二种的size指的期望的数组元素的个数。其length为size的值。 虽然此方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
第三种参数ele0、ele1...是参数列表。当使用这些参数来调用构造函数Array()时,新创建的数组的元素就会被初始化为这些值。它的length字段也会被设置为参数的个数。
二、Array对象的属性
constructor — 返回对创建此对象的数组函数的引用
length — 设置或返回数组中元素的数目
prototype — 是我们有能力向对象添加属性和方法
例子添加属性:
function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
employee.prototype.age = null;
bill.age = 21;
document.write(bill.age);
console.log(bill.age);
三、Array的对象方法
1.concat() — 连接两个或更多的数组,并返回结果。
比如
var a = [1,2,3];
document.write(a.concat(4,5));
输出的结果是
1,2,3,4,5
但是原来的数组a还是[1,2,3];也就是说a.concat(4,5)返回的就是一个数组
2.join() — 把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分割
比如我们创建一个数组,然后把它的所有元素放入一个字符串
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.join())
document.write(arr.join(“.”))
输入的结果是
George,John,Thomas
George.John.Thomas
arr.join(“.”)就是用’.’分割
3.pop() — 删除并返回数组的最后一个元素
比如,我们创建一个元素,然后再删除最后一个元素:
var a = [1,2,3];
var b = a.concat(4,5);
console.log(a,b);
var arr = new Array(3);
arr[0] = "tom";
arr[1] = "Jim";
arr[2] = "bill";
var bb = arr.pop();
console.log(bb,arr);
输出的结果是:
bill ["tom", "Jim"]
4.push() — 向数组的末尾添加一个或多个元素,并返回新的长度
比如
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
console.log(arr.push("James") , arr )
输出的结果
4 ["George", "John", "Thomas", "James"]
5.reverse() — 颠倒数组中的元素顺序
var arr = new Array("123","124","125");
var bb = arr.reverse();
console.log(arr,bb);
输出结果:["125", "124", "123"] ["125", "124", "123"]
6.shift() — 删除并返回数组的第一个元素
var arr = new Array("123","124","125");
var bb = arr.reverse();
console.log(arr.shift(),arr);
输出结果:
125,["124", "123"]
7.slice() — 从某个已有的数组返回选定的元素
语法格式:arrayObject.slice(start,end)
start — 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end — 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
注意:原数组不会发生变化。
var arr = new Array("123","124","125","126","127","128");
console.log(arr.slice(1, 3),arr);
输出结果:
["124", "125"] ["123", "124", "125", "126", "127", "128"]
8.sort() — 对数组的元素进行排序
语法格式:arrayObject.sort(sortby)
sortby — 可选。规定排序顺序。必须是函数。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
创建一个数组,并按字母顺序进行排序:
var arr = new Array("133","114","155","146","107","128");
console.log(arr.sort(),arr);
输出结果:
["107", "114", "128", "133", "146", "155"] ["107", "114", "128", "133", "146", "155"]
按照数值的大小对数字进行排序:
function sortNumber(a,b)
{
return a - b;
}
var arr = new Array("133","114","155","146","107","128");
console.log(arr.sort(sortNumber));
输出的结果:
["107", "114", "128", "133", "146", "155"]
9.splice() — 删除元素,并向数组添加新元素
向/从数组中添加/删除项目,然后返回被删除的项目。
注意:该方法会改变原始数组。
语法格式:arrayObject.splice(index,howmany,item1,.....,itemX)
参数:index — 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany — 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX — 可选。向数组添加的新项目。
例子,向数组添加一个元素:
var arr = new Array("133","114","155","146","107","128");
console.log(arr.splice(2, 0, "200"),arr);
输出结果:
[] ["133", "114", "200", "155", "146", "107", "128"]
例子, 替换掉一个元素
var arr = new Array("133","114","155","146","107","128");
console.log(arr.splice(2, 1, "200"),arr);
输出结果:
["155”] ["133", "114", "200", "155", "146", "107", "128"]
10.toSource() — 返回该对象的源代码
IE、Safari、Chrome、Opera 等浏览器均不支持该方法,只有FireFox支持
function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}
var bill=new employee("Bill Gates","Engineer",1985);
document.write(bill.toSource());
输出结果:
({name:"Bill Gates", job:"Engineer", born:1985})
11.toString() — 把数组转化为字符串,并返回结果
var arr = new Array("133","114","155","146","107","128");
console.log(arr.toString());
输出结果:
133,114,155,146,107,128
12.toLocalString() — 把数组转化为本地数组,并返回结果
首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.toLocaleString())
输出结果:
George, John, Thomas
13.unshift() — 向数组的开头添加一个或更多元素,并返回新的长度
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
语法格式:arrayObject.unshift(newelement1,newelement2,....,newelementX)
newelement1 — 必需。向数组添加的第一个元素。
newelement2 — 可选。向数组添加的第二个元素
newelementX — 可选。可添加若干个元素。
var arr = new Array("133","114","155","146","107","128");
console.log(arr.unshift("0","111”),arr);
输出结果:8 ["0", "111", "133", "114", "155", "146", "107", "128"]
14.valueOf() — 返回数组对象的原始值
valueOf() 方法返回 Array 对象的原始值。
该原始值由 Array 对象派生的所有对象继承。
valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。