数组方法
push()
在数组的尾部添加若干个元素
参数:要增加的元素,可以是多个
返回值:新数组的长度
修改原数组
while(arr.push({})<10); 循环给尾部添加若干个元素
pop()
删除最后一位
参数:无
返回值:删除的元素
修改原数组
while(arr.pop()!==3); 删除到某元素为止,同时该元素也会被删除
如果数组中存储的是对象,我们必须将所有的对象引用全部设为null
-
while和for都可以,for的效率更高
while(arr.length>0){
arr[arr.length-1]=null;
arr.pop();
} - for(var i=0;i<arr.length;i++){
arr[i]=null;
}
arr.length=0;
unshift()
在数组的头部添加若干个元素
参数:要增加的元素,可以是多个
返回值:数组增加之后的长度
修改原数组
shift()
将数组的头部一个元素删除
参数:无
返回值:删除的元素
修改原数组
join()
使用某个字符作为连接符,将所有数组的元素连接成为一个字符串
参数:转成字符之后,每个数据之间的连接符(如果连接符没有,默认以逗号连接)
返回值:转换的字符串
不修改原数组
concat()
数组连接若干个数组或者元素
参数:要连接的元素,可以是多个
返回值:连接完成的数组
不修改原数组
splice()
删除元素,并向数组添加新元素
参数:
两个:1起始索引,2删除个数,不插入数据,只删除
两个以上:1起始索引,2删除个数,之后 删除,并插入后面的元素
返回值:删除了的元素
修改原数组
举例
- var arr1=arr.splice(1);//删除到尾部
- var arr1=arr.splice(-1);//如果第一个参数是负数,从后向前数开始删除
- var arr1=arr.splice(0);//将一个数组的所有元素转移到另一个数组
- var arr1=arr.splice();//没有删除返回空数组
- var arr1=arr.splice(-3,2);//从倒数第3个元素向后删除2个元素
- var arr1=arr.splice(1,2,-2,-3);//从第一位开始向后删除两个元素,并且在该位置插入-2和-3,替换,并且返回被删除两个元素组成的数组
- var arr1=arr.splice(1,arr.length,0,-1,-2);//从某个位置开始删除到数组的尾部
- var arr1=arr.splice(1,0,0);//在第一位插入一个元素0,不删除,返回空数组
slice()
从第几项开始到第几项结束复制这些元素到新数组中
参数:
一个:表示从指定位置开始截取,到结束
两个:表示从指定位置到结束位置的前一个
返回值:截取并拷贝出来的新数组
不修改原数组
举例
- var arr1=arr.slice(0);//复制数组
- var arr1=arr.slice();//复制数组
- var arr1=arr.slice(-2);//从后向前数第2个元素到尾部的所有元素复制
- var arr1=arr.slice(1,2); //从第一项复制到第二项,不包括结束这一项
拓展:将列表转换为数组
- ES6 列表型强转数组 Array.from(divs);
- Array.prototype.slice.call(divs);或[].slice.call(divs);
- Array.prototype.concat.apply([],divs);或[].concat.apply([],divs);
sort()
排序
参数:函数:function(m,n){return n-m;} m-n数值升序,n-m数值降序
返回值:排序之后的数组
修改原数组
拓展:常用排序算法
-
冒泡排序
两两比较,大的放后面
选择排序
- 按照从左到右的顺序,依次取出每个数据,后后面所有数据做比较,找到最小值,交换
快排序
- 一分为二,分别快排序,递归进行
reverse()
当前数组按照倒装顺序将原数组颠倒
参数:无
返回值:翻转之后的数组(修改之后的原数组)
修改原数组
indexOf()
返回指定数据所在的索引,没有返回-1
参数:
1个 要查找的数据
2个 1要搜索的元素 2从第几个下标开始搜索
返回值:索引或-1
不修改原数组
lastIndexOf()
从后向前查找元素
参数:2个
要查找的元素,从什么位置开始查找
返回值:索引或-1
不修改原数组
fill()
填充
参数 :3个
要填充的值,从什么位置开始,到什么位置之前结束
返回值:填充后的数组
修改原数组
注:fill只能用于有长度的数组,如果不给与开始位置和结束位置,就会全部填充覆盖
forEach()
遍历数组,可以获取使用元素和下标,自动过滤空元素(空元素不遍历)
参数:函数,函数自带三个形参,1数据,2索引,3数组自身
返回值:无
不修改原数组
缺陷:函数中this指向将会被改变
map()
遍历数组
参数:函数,函数自带三个形参,1数据,2索引,3数组自身
不修改原数组
返回值:数组,其中的数据是:每次遍历到数组中数据时的返回值
注:新数组的长度和原数组相同
与forEach区别:有无返回值
some()
遍历数组,检测所有数据(只要有一个返回true,就是true,同时停止遍历)
参数:函数,函数自带三个形参,1数据,2索引,3数组自身
返回值:布尔值,遍历数组中数据时,只要有一个返回true,就是true,同时停止遍历
不修改原数组
every()
遍历数组,检测所有数据(必须所有返回true,才是true)
参数:函数,函数自带三个形参,1数据,2索引,3数组自身
返回值:布尔值,遍历数组中数据时,必须所有返回true,才是true,只要有一个false,就是false,停止遍历
不修改原数组
filter()
遍历数组,过滤数据
参数:函数,函数自带三个形参,1数据,2索引,3数组自身
返回值:数组,中的数据是:每次遍历到数组中数据时的返回值,为true时的值
不修改原数组
reduce()
遍历数组,归并
参数:
1.函数,这个函数自带四个形参,1上一个值,2数据,3索引,4数组自身2.指定默认情况下 的 上一个值↑;如果没有指定,上一个值,默认找数组的第一个数据
返回值:最后一个遍历的返回值
不修改原数组
XMind: ZEN – Trial Version