Array概述
除了Object类型,最常用的类型;
实质:有序的数据列表,
特性:可以动态的调整数组的大小
- 创建数组的两种方式
-
- 构造函数创建方式 var arr = new Array()
- 数字字面量方式 var arr = [ ];
-
- var arr = [ , , ] //创建3 或 2 项的数组 ---->不同浏览器的解释不一样 不要使用
- 数组有length属性 ,可读取也可设置 。设置时,如果超出,给超出的部分赋值 undefined , 如果未超出会裁剪数组。
Array 数组方法:
- 检测数组
-
- instanceof操作符
if (value instanceof Array){
//如果是数组才能进入到这个位置
}
-
-
- 如果一个网页中包含多个框架,数组是从另外一个框架中传入的,那么 instanceof就变得不可靠了 (一般不会出现这种情况)
- isArray()
-
- ECMAScript 5 中为 解决 instanceof 有可能不可靠的问题添加了 isArray()方法
-
- 兼容性 IE 9++
-
- 转换方法
-
- 和所有对象一样会有 toLcaleString()、toString()、valueOf()方法,
-
- toString( ) 返回由数组中的每个值得字符串形式拼接而成的一个以逗号分隔的字符串。
--> 实际上,为了创建这个字符串会调用数组每一项的toString()方法。 - valueOf() 返回的还是数组 一般是转换成能使用的值之后再交给其他方法使用(隐式)
- toLocalString() 其他对象的都是先调用valueOf方法转换成可使用的值 然后调用toString()方法
但是在数组中 先调用toLocaleString()方法
- toString( ) 返回由数组中的每个值得字符串形式拼接而成的一个以逗号分隔的字符串。
- join()
var colors = ["red", "green", "blue"];
alert(colors.join(",")); //red,green,blue
alert(colors.join("||")); //red||green||blue
-
-
- 作用:将数组的每一项用 分隔符字符(参数) 链接起来
- 参数:只能有一个,如果不传参数或者传入undefined 则以“,”链接
- 兼容:IE7--版本时 会使用字符串”undefined“ 作为分隔符
-
- 栈方法
-
- push()
-
- 作用:将数据逐个 推入 数组中
- 参数:任意个数
- 返回值:修改后的数组的长度
- pop()
-
- 作用:从数组的末尾移除最后一项,减少数组的长度(length值)
- 返回值:移除的那一项的值
- 队列方法
-
- shift()
-
- 作用:移除数组第一项,并改变数组的长度
- 返回值:移除的那一项的值
- unshift()
-
- 作用:在数组的前端添加一项值,
- 参数:任意数量 ,中间用“,”隔开
- 返回值:修改后数字的长度
var colors = new Array(); //ظॺᅃ߲数ፇ
var count = colors.unshift("red", "green"); //ླྀଇၜ
alert(count); //2
count = colors.unshift("black"); //ླྀଷᅃၜ
alert(count); //3
var item = colors.pop(); //ൽڥፌࢫᅃၜ
alert(item); //"green"
alert(colors.length); //2
- 兼容:IE7-- unshift( ) 方法总是返回undefined,而不是数组额长度
- 排序方法
- reverse()
- 作用:反转数组项的顺序
- sort()
- 原理:每个数组项会先调用 toString()方法,然后比较字符串(升序排列)期内可以传递回调函数
- reverse()
var values = [0, 1, 5, 10, 15];
values.sort(); //即便数组的每一项都是数值,也会按照字符串的升序排列
alert(values); //0,1,10,15,5
-
-
- 参数:回调函数
- 函数中返回一个数,正数 就是升序 负数就是降序排列 操作方法
-
-
- concat() 基于原来的数组,将参数推入原数组中
-
- 参数 : 可以是一个或多个数组,
如果不是一个数组,就会被简单的添加到数组结尾
- 参数 : 可以是一个或多个数组,
- slice()
-
- 作用:基于当前数组中的一项或者多项创建一个新数组,
- 参数:当传入一个参数的时候,从该参数的位置,截取到最后
当传入两个参数的时候,从第一个参数位置开始,到第二个参数位置(但是最后这个位置的项取不到);
注意:传参允许传负数 (但是:当结束位置小于开始位置的时候,返回空数组) - 返回值:截取到的数组
var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
-
- splice()最强大的数组方法
-
- 删除:当两个参数的时候,第一个参是位置,第二个参数是个数
- 替换:之后的参数,都会插入到删除的数组项的位置
- 返回值:是一个有删除项组成的数组
- 位置方法
- indexOf()
- 作用:从数组的开头查找 “ 参数一 ”所在的位置
- 参数:第一个参数,要查找的项
第二个参数,查找起始的位置 - 返回值:查找项坐在的位置,没查找到返回 - 1;
- 兼容:IE9++
- lastIndexOf()
- 作用:从数组的结尾开始查找 “ 参数一 ”所在的位置
- 参数:第一个参数,要查找的项
第二个参数,查找起始的位置 - 返回值:查找项坐在的位置,没查找到返回 - 1;
- 兼容:IE9++
- indexOf()
- 迭代方法
-
- every():对数字中的每一项运行给定的函数,如果该函数对每一项都返回true,才返回true,
- filter() :对数组中的每一项运行给定的函数,返回该函数会返回true的项组成的数组
- forEach():对数组中的每一项运行给定的函数,没有返回值
- map():对赎罪中的每一项运行给定的函数,返回每次调用的结果组成的数组
- some():对数组中的每一项运行给定的函数,如果函数对任一项返回true,就返回true;
- 并归方法 ECMAScript 5 才添加的方法
- reduce()
- reduceRight()