js 数组
1.
> js 数组的每一项可以保存任何类型的数据;
>数组的length属性不是只读的,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项;
2. 检测数组
> typeof arr 输出 object typeof不能检测出是不是数组,它只能检测出是引用类型
> arr instanceof Array 输出 true instanceof 使用的前提条件是:假定全局只有一个执行坏境,如果有多套框架它们具有各自的不同构造函数就判断不出来
> Array.isArray(arr) 输出true Array.isArray 没啥毛病,就是不支持IE8
3. 转换方法
> toString() 调用每一项的toString(),然后逗号分隔
> toLocalString() 调用每一项的toLocalString(),然后逗号分隔
> valueOf() 返回数组本身
>join(连接字符) 如果不给join方法传入任何值或者传入undefined则使用逗号作为分隔符
如果数组中某一项的值是null或者undefined,那么该值在转换方法中以空字符串表示
4. 常用方法
>栈:push() <=>pop() push()接受任意数量参数,并逐个添加到末尾; pop()从数组末尾移除最后一项并返回该项
>队列:push() <=>shift() shfit()移除数组中的第一项并返回该项
unshift()在数组前端添加任意个项并返回新数组的长度
>重排序: reverse() 反转数组项的顺序
sort() 按升序排列数组,调用每一个数组项的toString()方法,然后比较得到的字符串确定如何排序;sort()函数接收一个比较函数作为参数
>操作方法:concat() 先创建当前数组的一个副本,然后将接受到的参数添加到这个副本末尾
slice() 基于当前数组中的一个或者多个项创建一个新数组(不会对当前数组造成影响),接受两个参数【返回项的起始位置,结束位置)。如果传入的参数是负数,则用数组长度加上该数来确定相应的位置
splice() 主要用途是向数组的中部插入项 1)删除 splice(要删除的第一项位置,删除的项数)
2)插入 splice(起始位置,要删除的项数0,要插入的任意数量项)
3)替换 splice(起始位置,要删除的项数 不为0,要插入的任意数量项)
>位置方法:indexOf(要查找的项【,查找起点位置索引】) 从前往后找
lastIndexOf(要查找的项【,查找起点位置索引】) 从后往前找
>迭代方法:都接受一个函数作为参数,对数组中的每一项运行参数函数 function(item, index, array)
every() 如果该函数每一项都返回true,则返回true
some() 如果该函数对任意一项返回true,则返回true
filter() 返回该函数会返回true的项组成的数组
forEach() 没有返回值
map() 返回函数每次调用的结果组成的数组
>归并方法:reduce()从前往后遍历, reduceRight()从后往前遍历 迭代数组的所有项,然后构建一个最终返回的值
接受两个参数(每一项上调用的函数function(prev, cur, index, array)【,作为归并基础的初始值】)
补充:jQuery中常用的数组方法
$.each(arr, function(index, item){}) 参数函数返回true相当于continue, 返回false相当于break
$.grep( array, function(item, index) [, invert ] ) 过滤。 invert参数默认为false返回所有结果为ture的数组项, invert为true的时候返回返回所有结果为false的数组项
$.inArray(value, array) 判断value是否在数组中,存在返回下标,不存在返回-1
$.merge() 合并数组
$.makeArray() 转换数组