-
数组(内建对象)
- ?(思考)我们为什么使用数组
创建数组(对象)
创建一个数组,有三种方法。
下面的代码定义了一个名为 myCars的数组对象:
- 1: 常规方式:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
- 2: 简洁方式:new(构造)的时候赋值
var myCars=new Array("Saab","Volvo","BMW");
- 3: 字面:
var myCars=["Saab","Volvo","BMW"];
-
获取数组长度
我们可以使用数组对象的length属性来获取数组的长度
连续数组和非连续数组:
修改数组的length:
技巧:在数组的最末尾添加一个新元素
arr[arr.length]=100;//在当前数组末尾添加1个新元素100
arr[arr.length]=101;//在当前数组末尾添加1个新元素101
原理:因为数组的length=数组当前最大索引+1.
数组的元素可以存储任何数据
数组中的元素可以是简单数据,也可以是对象,也可以是函数,见下:
var arr=[function(){},function(){}];//为数组增加函数对象
arr[0]();//调用数组中的函数
总结:数组中可以存任何数据。
-
二维数组:
数组中也可以放数组 例如;
var arr = [[1,2,3],[4,5,6],[7,8,9]];//二维数组
除了二维数组,还会有三维数组,乃至N维数组
-
数组的方法
(更多方法参考见http://www.runoob.com/jsref/jsref-obj-array.html)
-
push方法
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
-
pop() 方法
用于删除数组的最后一个元素并返回删除的元素。
-
unshift() 方法
可向数组的开头添加一个或更多元素,并返回新的长度。
-
shift() 方法
用于把数组的第一个元素从其中删除,并返回第一个元素的值。
以上几个方法示例如下:
var arr=["孙悟空","猪八戒","沙和尚"];
var newLength = arr.push("唐僧","蜘蛛精","玉兔精");//给arr数组末尾添加了新的元素并返回新的长度
console.log(arr + "的长度 = " + newLength);//输出arr和长度
var x = arr.pop();//删除最后一个元素并返回该元素
console.log(x + "已删除(最后一个元素)");//输出“玉兔精”
arr.unshift("张学友","周润发") ;//在数组开头添加张学友和周润发
console.log(arr);//输出数组看看变化
var y= arr.shift();//删除数组第一个元素并返回该元素
console.log(y + "已删除(第一个元素)");
console.log(arr);//输出数组看看变化
控制台输出如下:
-
遍历数组
方法:通过for循环,使用数组的length属性,遍历数组。如下:
-
forEach方法遍历数组
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
语法
array.forEach(function(currentValue, index, arr), thisValue)
参数
参数 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
function(currentValue, index, arr) | 必需。 数组中每个元素需要调用的函数。 函数参数:
| ||||||||
thisValue | 可选。传递给函数的值一般用 "this" 值。 如果这个参数为空, "undefined" 会传递给 "this" 值 |
-
slice()方法
slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice() 方法不会改变原始数组。
语法
array.slice(start, end)
参数 Values
参数 | 描述 |
---|---|
start | 可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
返回值
Type | 描述 |
---|---|
Array | 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。 |
slice方法实例:
slice方法总结:
-
splice()方法
splice() 方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。
语法
array.splice(index,howmany,item1,.....,itemX)
参数 Values
参数 | 描述 |
---|---|
index | 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 |
howmany | 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 |
item1, ..., itemX | 可选。要添加到数组的新元素 |
返回值
Type | 描述 |
---|---|
Array | 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。 |
例如把数组删掉从(第0下标)起的2个元素。在控制台分别显示原数组被删指定元素后的结果,删除的指定元素(也是个数组)。如下:
- splice()方法也可以实现插入/替换元素功能。如下图,元素“猪八戒”被删除替换成了”牛魔王“和”铁扇公主“。
-
contact()方法
concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
array1.concat(array2,array3,...,arrayX)
参数
参数 | 描述 |
---|---|
array2, array3, ..., arrayX | 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 |
返回值
Type | 描述 |
---|---|
Array 对象 | 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。 |
-
join()方法
join() 方法用于把数组中的所有元素转换一个字符串。
语法
array.join(separator)
参数值
参数 | 描述 |
---|---|
separator | 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 |
返回值
类型 | 描述 |
---|---|
String | 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。 |
注意:如果不想用连接符,可以指定空串为分隔符。
reverse() 方法
reverse() 方法用于颠倒数组中元素的顺序。
语法
array.reverse()
返回值
类型 | 描述 |
---|---|
Array | 颠倒顺序后的数组 |
sort() 方法
sort() 方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。
如上图,arr中的元素使用sort()方法后按字母顺序排序了。
如果是纯数字排序,请注意:
以下是数字升序及降序示例:
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});//数字排序(数字和升序):
//fruits输出结果:1,5,10,25,40,100
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});//数字排序(数字和降序):
//fruits输出结果:100,40,25,10,5,1