Array类型
创建方法:
(1)构造函数法:
var color = new Array(); //创建一个空数组,省略new也是可以的,等价于new color = Array(); var color = new Array(20); //创建一个length为20的数组 var color = new Array("red", "blue", "green"); //创建一个包含3个字符串的数组
(2) 数组字面量表示法(不会调用构造函数):
var color = ["red", "blue", "green"]; //创建一个包含3个字符串的数组 var color = []; //创建一个空数组
数组中的值的访问:
方括号加索引值。索引值小于数组项数,返回对应项的值。索引超过数组现有项,数组会自动增加到该索引值加一的长度
var color = ["red", "blue", "green"]; alert(color[0]); //显示第一项 color[2] = "black"; //修改第三项 color[3] = "brown"; //新增第四项
length属性
length不是只读,可通过其向数组添加或移除项。
var color = ["red", "blue", "green"]; color[length-1] = "black"; //在数组末尾添加“black” color.length = 3; //数组长度变为3,black被移除 color.length = 4; //数组长度变为4,最后一项为undefined alert(color[3]); //undefined
1 检测数组
方法:
- 对于一个全局作用域:使用instanceof操作符
if (value instanceof Array) { doSomething(); }
- 网页包含多个框架,含有两个以上全局作用域,使用Array.isArray()函数
if (Array.isArray(value)) { doSomething(); }
2 转换方法
- toSting() : 对数组每一项都元素调用toString()方法,返回一个以逗号分隔的字符串
- toLocaleString():对数组每一项都元素调用toLocaleString()方法,返回一个以逗号分隔的字符串
- valueOf():返回的还是数组
- join():可以指定分隔符来返回数组的字符串。
alert(color.join(",")); //red, green, blue alert(color.join("||")); //red||green||blue
3 栈方法
- push(value):把一个元素添加到数组的末尾;
- pop(value):从数组末尾删除并返回一个元素
4 队列方法
- shift():移除数组第一项元素并返回,结合push()方法可以像队列一样使用数组;
- unshift():在数组前端添加任意项并返回数组的新长度,结合pop()方法从反方向模拟队列(在数组前端添加,后端移除)
注意:在IE7及更早版本,unshift()总返回undefined而不是数组长度!!!!!!!
5 重排序方法
- reverse() :将数组反转
- sort():默认情况下按升序排列数组,对数组中每一项调用toString(),然后比较字符串。可向其传递一个函数参数,来改变指定比较的方法。
1 function compare(value1, value2) { 2 if (value1 < value2) { 3 return -1; 4 } 5 if (value1 > value2) { 6 return 1; 7 } else { 8 return 0; 9 } 10 } 11 12 var value = [1, 5, 3, 6, 4, 2]; 13 value.sort(compare); 14 alert(value); //1, 2, 3, 4, 5, 6
6 操作方法
- concat():创建当前数组的一个副本,若传递了参数,则把参数中的值追加到数组后面。
- slice():
slice(x); //返回x到数组末尾的所有项 slice(x, y); //返回x到y之间但不包括y的所有项
- splice():始终返回一个数组,内容是从原是数组删除的项。若没有删除项,则返回的是空数组。
- 删除:指定两个参数,要删除的第一项的位置和要删除的项数。如:splice(0, 2)删除数组的前两项
- 插入:提供三个或以上参数:起始位置,0(要删除的项)和要插入的项
- 替换:提供三个或以上参数:起始位置,要删除的项,要插入的项。
7 位置方法
- indexOf():接受两个参数,要查找的项和表示查找起点位置的索引(从前往后找)
- lastIndexOf():接受两个参数,要查找的项和表示查找起点位置的索引(从后往前找)
都返回查找项在数组中的索引位置,没有找到返回-1。
2.8 迭代方法
- every():对数组中每一项运行给定函数,对每一项都返回true则返回true;
- filter():对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组;
- forEach():对数组中每一项运行给定函数。没有返回值;
- map():对数组中每一项运行给定函数,返回每次函数调用的结果组成的数组;
- some():对数组中每一项运行给定函数,对仁一项返回true则返回true。
以上方法都不会修改原数组中的值。
传入这些方法中的函数会接受三个参数:数组项的值,该项在数组中的位置和数组对象本身。如:
var numbers = [1, 2, 3, 4, 3, 2, 1]; ver everyResult = numbers.every(function(item, index, array){ reutnr (item > 2); });
8 缩小方法
- reduce():从数组的第一项开始,逐个遍历到最后
- reduceRight():从数组最后一项开始,向前遍历到第一项
两个方法都接受两个参数:一个在每一项上调用的函数和(可选的)作为缩小基础的初始值。传给它们的函数接受4个参数:前一个值,当前值,项的索引和数组对象这个函数返回的任何值都会作为第一个参数自动传递给下一项。如:
var values = [1, 2, 3, 4, 5]; var sum = values.reduce(function(pre, cur, index, array){ return prev + cur; }); alert(sum); //15
时间: 2024-11-08 18:25:58