数组的API (引用程序编程接口) 库 1、静态方法(构造函数方法) Array.isArray(arr) 判断参数arr是否是数组 Array.of() es6中的方法,将参数放到数组中返回 例子:Array.of(3) [3] Array.of(3,4) [3,4] 2、非静态方式(构造函数原型中的方法,实例方法) 1. 循环类 Array.prototype.forEach(handler) 作用:遍历指定数组 参数:回调函数,可以接受3个参数(item,index,arr)forEach方法每次遍历出来一个元素后都执行该回调函数 返回值:undefined arr.forEach(function(item,index,arr){ item 为每次遍历出来的元素 index为遍历时候的索引 arr为当前正在遍历的数组 }) Array.prototype.every(handler) 作用:遍历指定数组,判断是否每个元素都满足指定条件 参数:回调函数,可以接受3个参数(item,index,arr),该回调函数会返回一个boolean值,当所有回调函数返回true,最终every方法的结果为true, 当有一个回调函数返回了false,该函数中止,every方法的结果为false 返回值:boolean Array.prototype.some(handler) 作用:遍历指定数组,判断是否有元素都满足指定条件 参数:回调函数,可以接受3个参数(item,index,arr),该回调函数会返回一个boolean值,当有回调函数返回true,该函数中止,最终every方法的结果为true, 当所回调函数返回了false,every方法的结果为false 返回值:boolean Array.prototype.map(handler) 作用:从指定元素中映射出某些值,组成新的数组返回 参数:回调函数,可以接受3个参数(item,index,arr),该回调函数会返回一个数组,数组元素为每个回调函数返回的值 返回值:Array Array.prototype.filter(handler) 作用:从指定中过滤出满足条件的元素,组成新的数组返回 参数:回调函数,可以接受3个参数(item,index,arr),该回调函数会返回一个数组,数组元素为回调函数返回值为true的那个元素 返回值:Array 2. 栈方法 后进先出结构 Array.prototype.push(v) 【原值改变】 作用:入栈,为指定数组添加元素,该元素添加到数组的末尾 参数:可以多个任意类型的数组 返回值:数组的长度 例子:var arr = [1,2,3]; arr.push(4,5,6) // arr [1,2,3,4,5,6] Array.prototype.pop() 【原值改变】 作用:出栈,将数组末尾的值删除并且返回 参数: 返回值:出栈的元素 例子:var arr = [1,2,3]; arr.pop() // arr [1,2] 返回值3 3. 队列方法 先进先出 Array.prototype.shift() 【原值改变】 作用:出队列,将数组开头的值删除并且返回 参数: 返回值:出队列的元素 Array.prototype.unshift() 【原值改变】 作用:在数组开头插入一个值删除并且返回数组长度 参数:值 返回值:数组长度 4. 排序方法 反转序列 Array.prototype.reverse() 【原值改变】 作用:将数组中的元素反转 参数: 返回值:反转之后的数组 Array.prototype.sort() 【原值改变】 作用:排序, 如果没有参数,将会按照字符串[如果是其他数据类型,先转换成字符串]的顺序进行排序;如果参数由比较器函数,则按照比较器函数规则进行排序 参数:无 或 比较器函数 比较器函数接受两个参数,a,b,当a>b返回1,a<=b返回-1,正序 当比较器函数返回值大于0,a排在b的后面, function(a,b){ if(a>b){ return 1; // a排在b的后面,大的在后面,升序 } else { return -1; // a排在b的前面,小的在前,升序 } } 返回值:排序后的数组 1) 比较器函数生成函数 function compare(prop){ return function(a,b){ if(a[prop]>b[prop]){ return -1; } else { return 1; } } } 2) 调用生成函数生成一个比较器函数,f为比较器函数 var f = compare("price") 3) 将比较器函数作为参数传递给sort goods.sort(f); ---等价于--- goods.sort((function(prop){ return function(a,b){ if(a[prop]>b[prop]){ return -1; } else { return 1; } } })("price")); 5.数组分割函数 Array.prototype.slice(begin,end) 【原值不改变】 作用:从指定数组中获取子数组,不改变原值。 参数:begin开始位置;end结束位置,不包含结束位置,end可以省略,截取到数组末尾 返回值:截取的子数组 Array.prototype.splice(begin,len,a,b,c...) 【原值改变】 作用:删除,替换,插入 参数:begin开始位置;len删除的元素个数,a,b,c插入的元素 返回值:删除元素组成的数组 6. 数组元素查找 Array.prototype.indexOf(item) 作用:从数组前往后查找item所在的索引,找到之后不再检索 参数:要查找的元素值 返回值:索引/-1 Array.prototype.lastIndexOf(item) 作用:从数组后往前查找item所在的索引,找到之后不再检索 参数:要查找的元素值 返回值:索引/-1 7. 数组合并 Array.prototype.concat() 【原值不改变】 作用:合并数组 参数:数组 返回值:合并后的数组 8. 数组的序列化 Array.prototype.join(s) 将数组转换为字符串,通过s分割开数组中每个元素。 JSON.stringify() // es标准 querystring.stringify() // nodejs,浏览器(第三方)