今天总结了一下之前所学到的js中数组的方法,分别从参数,返回值,是否改变原数组等方面介绍了数组方法,方法如下:
1.toString()方法: 把数组转换为数组值(逗号分隔)的字符串。
参数:无;
是否改变原数组:无;
返回值:原数组数组值组成的字符串;
2.push() 方法:(在数组结尾处)向数组添加一个新的元素。
参数:需要添加的数组值
原数组是否改变:改变
返回值:返回新数组长度
3.unshift() 方法:(在开头)向数组添加新元素。
参数:需要添加的数组值
原数组是否改变:改变
返回值:返回新数组长度
4.pop() 方法:从数组中删除最后一个元素。
参数:无
原数组是否改变:改变
返回值:被删除的数组值(最后一个)
5.shift() 方法:会删除首个数组元素。
参数:无
原数组是否改变:改变
返回值:被删除的数组值(第一个)
6.splice() 方法:可用于向数组添加新项或删除元素。
参数:
1.第一个参数定义了应添加新元素的位置(拼接)。
2.第二个参数定义应删除多少元素。
3.其余参数定义要添加的新元素。
原数组是否改变:改变为添加数组值后的新数组
返回值:被删除的数组组成的新数组
7.reverse() 方法用于反转颠倒数组中元素的顺序。
参数:无
原数组是否改变:改变为颠倒后的新数组
返回值:跟原数组一样改变为颠倒后的新数组
8.(1)join()方法: Array.join()方法是String.split()方法的逆向操作,后者是将字符串分割成若干块来创建一个数组,在默认情况下都会以逗号分隔的字符形式返回数组项。
参数:join()方法只接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串
原数组是否改变:没有改变
返回值:以字符的形式返回数组项
(2)而join()方法有参数时可以使用不同的分隔符来构建这个字符串:
9.slice() 方法:可从已有的数组中返回选定的元素。
语法:var newArr=arr.slice(start,end);
参数:start 必需规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
原数组是否改变:没有改变
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的arr中的元素。
注意:该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 arr.splice()。
注意,如果参数为一个时,返回值为start之后的所有元素值组成的新数组
10.sort() 方法用于对数组的元素进行排序。(如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。)
语法:arr.sort(sortby);
参数:必须是函数,规定排序顺序
原数组是否改变:改变为排序后的新数组
返回值:跟原数组一样改变为排序后的新数组
注意:如果想要实现数值大小排序应改变回调函数sortby的值:
11.concat() 方法:用于连接两个或多个数组。
语法:arr.concat(arrayX,arrayX,......,arrayX)
参数:要新增的数组
原数组是否改变:不改变
返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
ES5新增数组方法:
12.ES5为数组实例添加了两个位置方法:indexOf()、lastIndexOf()
(1)indexOf(): 跟字符串查找一样,查找指定元素是否存在,如果存在,返回下标,如果不存在返回-1
(2)lastIndexOf():跟indexOf()一样,只是查找起始点不同,indexOf是从第一个开始查找,lastIndexOf()是从最后一个查找,如果存在,返回下标,如果不存在返回-1
13.forEach()方法:迭代(遍历)数组。
有两个参数第一个参数是回调函数,第二个参数是控制当前this指向谁
第一个参数(回调函数):function(value, index, arr){};
回调函数内的三个参数分别为:当前循环的值,当前循环的索引,当前数组本身
第二个参数:this
返回值:undefined
是否改变原数组:没有
回调函数的返回值造成了什么影响:没有影响
14.map() 方法:遍历数组。
map()方法返回一个被操作后的新数组,不会改变原数组
map()一般配合return使用,如果没有return那跟forEach一样;
参数:回调函数
返回值:数组,数组内是,每个回调函数的返回值
是否改变原数组:没有
回调函数的返回值造成了什么影响:被放在了map最终返回的数组内
15.filter() 方法:过滤,过滤不符合条件的元素,如果回调函数返回true则保留,返回false则过滤掉。
参数:回调函数
返回值:返回符合条件的值
是否改变原数组:没有
回调函数的返回值造成了什么影响:被放在了filter最终返回的数组内
16.some()方法:判断数组内是否有指定元素,如果只要有一个则返回true,如果一个都没有则返回false,停止遍历。
参数:回调函数
返回值:存在符合条件返回true,否则返回false;
是否改变原数组:没有
17.every()方法:判断数组内是否都有指定元素,如果全部都有则返回true,如果有一个没有指定元素则返回false,some()和every()相对。
参数:回调函数
返回值:都符合条件返回true,否则返回false;
是否改变原数组:没有
18.reduce()方法:并归。
reduce()回调函数有四个参数,
第一个参数为:之前计算过的值,
第二参数为:之前计算过的值的下一个值
第三个参数:当前索引
第四个参数为:当前数组对象
类似递归,可以求和之类的操作
reduce()和reduceRight()类似,只是执行方向不同,
reduce()从数组的开头往后递归
reduceRight()从数组的末尾往前递归
19.reduceRight()方法:反向并归。
reduceRight()和reduce()类似,只是执行方向不同,
reduceRight()从数组的末尾往前递归
reduce()从数组的开头往后递归。
实例同上。