JavaScript基础知识梳理--数组
1、创建方法
空数组:var obj=new Array();
指定长度数组: var obj=new Array( size );
指定元素数组 : var obj=new Array( 元素1,元素2,....);
单位数组:var obj=new Array[ 元素1,元素2,元素3,...,元素N];
多维数组:var a=new Array( [数组1],[数组2],[数组3],...,[数组N] );
2、基本操作
存取数组元素:
单维数组:数组名[ 下标索引 ]
多维数组:数组名[外层数组下标][内层数组下标]
特性:数组长度是弹性的,可自由收缩
数组下标从0开始
下标类型--数值
--非数值--转为字符串
--生成关联数组
--下标作为对象属性的名字
数组元素可以添加到对象中
增加数组元素: 使用[]运算符指定新的下标
删除数组:delete数组名[下标]
遍历数组:for( var 数组元素变量 in 数组 );
判断是否为数组:isAarry();----->
Array.isArray(object)
var ar = [];
var result = Array.isArray(ar);
// Output: true
var ar = new Array();
var result = Array.isArray(ar);
// Output: true
var ar = [1, 2, 3];
var result = Array.isArray(ar);
// Output: true
var result = Array.isArray("an array");
document.write(result);
// Output: false
3、数组属性
Constructor: 引用数组对象的构造函数
Length:返回数组的长度
Prototype:通过增加属性和方法扩展数组定义
4、ECMAScript 3方法
添加:
push()---在数组末尾添加任一项并返回修改后数组的长度
unshift()---在数组头部添加任意项并返回新数组的长度
concat()---合并两个数组并返回合并后的新数组
删除:
pop()---删除并返回数组的最后一个元素
shift()---删除并返回数组的第一个元素
push()和pop()-----栈方法(后进先出)
push()和shift()-----队列方法(先进先出)
子数组:
splice()---删除任意数量的项--> splice(要删除的下标,要删除的项数);
---在指定位置插入指定的项--> splice(起始下标,0,要插入的项)-----参数0表示不删除任何项
---替换任意数量的项-->splice(起始下标,要删除的项数,要插入的项)
splice()返回一个数组,该数组包含被删除的项,如果没有删除项,则返回空数组;
slice()---功能: 从已有的数组中选取部分元素构成新数组
---slice(返回项的起始位置,返回项的结束位置)---(1,如果是负数,则用数组长度加上该值确定位置。2,起始位置为数组的实际下标。3,结束位置的实际下标为结束值减一)
数组排序:
reverse()---颠倒数组中元素的顺序
sort()---功能:对字符数组或数字数组排序
---特性: 默认为字符串比较
按数值大小比较(需函数支持--升序)
reverse()和sort()返回的都是经过排序后的数组
sort()说明
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
1、若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
2、若 a 等于 b,则返回 0。
3、若 a 大于 b,则返回一个大于 0 的值。
1 function compare(value1,value2){ 2 if(value1>value2){ 3 return 1; 4 }else if(value1<value2){ 5 return -1; 6 }else{ 7 return 0; 8 } 9 }
数组转换:
toString()---转换为字符串并返回
toLocalString()---转换为本地格式并返回
Join()---用指定分隔符分割数组并转换为字符串
5、ECMAScript 5方法
位置方法:
indexOf(v1,v2)---从数组中起始位置开始查找
lastIndexOf(v1,v2)---从数组的结束位置开始查找
参数:v1要查找的项,v2表示查找七点
两个方法都返回要查找的项在数组中的位置,或者在没有找到的情况下返回-1。在比较第一个参数与数组中的每一项时,会使用全等操作符,也就是说,要求查找的项必须严格相等。
迭代函数:
every()---如果该函数对每一项都返回true,则返回true
Filter()---返回值为true的所有数组成员
forEach()---无返回值
map()---返回每次函数调用的结果数组
some()---有任意一项返回true,则返回true
参数: 接收参数(v1--要在每一项上运行的函数,v2--运行该函数作用域对象)
传入参数(v1--数组项的值item,v2--该项在数组中的位置,v3--数组对象本身)
缩小方法:
reduce()---从数组起始位置开始遍历
reduceRight()---从数组末尾开始遍历
参数:接收参数(v1--每一项上调用的函数,v2--作为缩小基础的初始值)
传入参数(v1--前一个值prev,v2--当前值cur,v3--项的索引index,v4--数组对象array)