对象继承
- toString():返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
注意:该方法的返回值与不使用任何参数调用join()方法返回的字符串相同
- toLocaleString():toString()方法的本地化版本,它经常也会返回与toString()方法相同的值,但也不总是如此。因为,它调用元素的是toLocaleString()方法将每个数组元素转化为字符串
注意:如果数组中的某一项的值是null或者undefined,则该值在toLocaleString()和toString()方法返回的结果中以空字符串表示
- valueOf():返回数组对象本身
数组转换
- join():将数组转换成字符串,默认以“,”隔开。
栈和队列
- unshift():在数组头部添加,会改变原数组 注意:在IE7-浏览器中,unshift()方法返回的总是undefined
- push():在数组尾部添加,会改变原数组
- shift():移除数组第一项,会改变原数组 注意:对空数组使用shift()方法,不会报错,而是返回undefined
- pop():移除数组最后一项,会改变原数组 注意:对空数组使用pop()方法,不会报错,而是返回undefined
数组排序
- reverse():用于反转数组的顺序,返回经过排序之后的数组;而原数组顺序也发生改变
- sort():默认情况下,该方法按字符串升序排列数组项,会调用每个数组项的toString()方法,然后比较得到的字符串排序,返回经过排序之后的数组,而原数组顺序也发生改变(注意:如果数组包含undefined元素,它们会被排到数组的尾部)
function sortNumber(a,b) { return a - b } function sortNumberTwo(a,b) { return b - a } var arr=[10,5,40,25,1000,1,108]; console.log(arr.sort());==》1,10,1000,108,25,40,5 console.log(arr.sort(sortNumber));==》1,5,10,25,40,108,1000=======>升序 console.log(arr.sort(sortNumberTwo));==》1000,108,40,25,10,5,1=======>降序
数组拼接
- concat():基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组,即不改变原数组,如果不给该方法传递参数时,它只是复制当前数组(浅拷贝);如果参数是一个或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中;如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾
创建子数组
- slice():基于当前数组中的一个或多个项创建一个新数组,接受一个或两个参数,即要返回项的起始和结束位置(slice(start,end)),最后返回新数组,所以slice()不影响原数组(注意:如果start是负数,则start = max(length + start,0),如果end是负数,则end = max(length + end,0)。start和end无法交换位置)
数组删改
- splice():用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,该方法会改变原数组,如果不传参则返回一个空数组,传参格式:splice(start,length);如果start是负数,则start = max(length + start,0);如果start是NaN,则相当于start = 0;如果只传一个参数,就从这个位置开始,直到数组最后一位,返回一个新数组
数组位置
ES5为数组实例添加了两个位置方法:indexOf()、lastIndexOf()
- indexOf(search,start):接收search和start两个参数,返回search首次出现的位置,如果没有找到则返回-1;search参数表示要搜索的项;使用严格相等运算符(===)进行比较,从左向右查找
- lastIndexOf(search,start)方法接收search和start两个参数,返回search第一次出现的位置,如果没有找到则返回-1;search参数表示要搜索的项;使用严格相等运算符(===)进行比较,从右向左查找
相同:start参数表示该搜索的开始位置,该方法会隐式调用Number()转型函数,将start非数字值(undefined除外)转换为数字。若忽略该参数或该参数为undefined或NaN时,start = 0
数组归并
- reduce():需要两个参数。第一个是执行化简操作的函数,第二个(可选)的参数是一个传递给函数的初始值(注意:该方法的返回结果类型和传入的初始值相同)。
化简函数的任务就是用某种方法把两个值组合或化简为一个值,并返回化简后的值 ;
化简函数接受四个参数,分别是:
【1】初始变量,默认为数组的第一个元素值。函数第一次执行后的返回值作为函数第二次执行的初始变量,依次类推
【2】当前变量,如果指定了第二个参数,则该变量为数组的第一个元素的值,否则,为第二个元素的值
【3】当前变量对应的元素在数组中的索引(从0开始)
【4】原数组对象
化简函数的这四个参数之中,只有前两个是必须的,后两个则是可选的
- reduceRight():工作原理和reduce()一样,不同的是它按照数组索引从高到低(从右到左)处理数组,而不是从低到高
数组迭代
- map():对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组,例如:[1,2,3].map(function(item,index,arr){return item*index})===>[0,2,6],第一个参数item:数组中的每一项,第二个参数index:数组下标,第三个参数arr:该数组
- forEach():对数组中的每一项运行给定函数,这个方法没有返回值。本质上与for循环迭代数组一样。如果需要有返回值,一般使用map方法
- filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。该方法常用于查询符合条件的所有数组项
- some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。并且当且仅当数值中的所有元素调用判定函数都返回false,它才返回false
- every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;只要有一项返回false,则返回false
javascript数组方法特意定义为通用的,因此它们不仅应用在真正的数组而且在类数组对象上都能正确工作。这22种方法中,除了toString()和toLocaleString()以外的所有方法都是通用的
可以改变原数组的方法总共有7种:包括unshift()、shift()、push()、pop()这4种栈和队列方法,reverse()和sort()这2种数组排列方法,数组删改方法splice()