javascript数组常用方法
前言
一位正在学习前端的菜鸟,虽菜,但还未放弃。
常用方法
push() 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回新数组的长度。
var arr = [1,2,3,4,5]; var len = arr.push(6);//返回添加完数组的新长度 console.log(arr);//[1, 2, 3, 4, 5, 6] console.log(len)//6
unshift()方法与push()方法相反,能够在数组前面添加任意个项,并返回新数组的长度。
var arr = [1,2,3,4,5]; var len = arr.unshift(-1,0); console.log(arr);//[-1,0,1,2,3,4,5] console.log(len)//7
pop() 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
var arr = [1,2,3,4,5]; var last = arr.pop();//删除并返回数组最后一个数 console.log(arr);//[1, 2, 3, 4] console.log(last)//5
shift()方法与pop()方法相反,能够移除数组中的第一个项并返回该项,同时将数组长度减 1。
var arr = [1,2,3,4,5]; var first = arr.shift();//删除并返回数组第一个数 console.log(arr);//[2, 3, 4,5] console.log(first)//1
reverse() 方法会反转数组项的顺序。
var arr = [1,2,3,4,5]; console.log(arr);//[1,2,3,4,5] arr.reverse(); console.log(arr)//[5,4,3,2,1]
sort() 方法按字母表,数字升序排列数组项。
sort()这个方法分几种情况
1,当数组为纯数字时,sort()这个方法会根据从0到9的顺序先比较第一位,第一位相同时再比较第二位
var arr = [12, 11, 0, 34, 8, 65]; arr.sort(); console.log(arr);//[0, 11, 12, 34, 65, 8]
2,当数组为纯字母时,sort()这个方法会根据a-z这个顺序先比较第一位,第一位相同时再比较第二位
var arr = ['gg','as','ft','g','ab']; arr.sort(); console.log(arr);//["ab", "as", "ft", "g", "gg"]
3,当数组为数字与字母混合时,sort()这个方法会先排序数字然后再排序字母
var arr = ['c','a',3,1,'b',2]; arr.sort(); console.log(arr);//[1, 2, 3, "a", "b", "c"]
4,sort()这个方法里面还可以传参数 Object.sort(function) 里面传的参数是必须一个函数
请注意,上面的代码没有按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数:
var arr = [12,11,0,34,8,65]; arr.sort(function(a,b){ return a-b; }); console.log(arr);//[0, 8, 11, 12, 34, 65]
concat() 方法用于连接两个或多个数组,参数可以是数组项或者数组( 可以多个参数 )。
var arr = [1,2,3]; var arr1 = [4,5,6]; var newsArr = arr.concat(arr1); console.log(newsArr);//[1, 2, 3, 4, 5, 6]
join()方法,将数组转换成对应的字符串。参数就是连接符。
var arr = [1,2,3,4,5,6]; arr = arr.join('-'); console.log(arr);//1-2-3-4-5-6
slice() 方法可从已有的数组中截取部分并返回选定的元素。参数一必填,为起始位置的下标(如果参数为负数,如-1,即从倒数开始,-2即倒数第二个)。参数二可选,为结束位置的下标
注意:不会改变原数组 会返回一个新子数组
var arr = [1,2,3,4,5,6]; var newsArr = arr.slice(2);//表示从下标2开始截取到最后的数组 console.log(newsArr);//[3, 4, 5, 6]
俩个参数的情况下
var arr = [1,2,3,4,5,6]; var newsArr = arr.slice(2,4);//表示从下标2开始截取到下标4的值(包括起始下标2但不包括结束下标4) console.log(newsArr);//[3, 4]
splice() 为js数组最强大的方法 可以对数组进行 删除、插入、替换
注意:会改变原数组 ,返回值是修改完的数组
1,对数组进行删除
var arr = [1,2,3,4,5,6]; arr.splice(0,2);//俩个参数表示的意思是从下标0开始 删除2个子元素 console.log(arr);//[3, 4, 5, 6]
2,对数组进行插入
var arr = [1,2,3,4,5,6]; arr.splice(2,0,'hellow');//三个参数表示的是在下标为2处添加一个hellow,添加的值可为多个 //注意:添加第二个参数须写为0 否则将变成修改 console.log(arr);//[1, 2, "hellow", 3, 4, 5, 6]
3,对数组进行修改
var arr = [1,2,3,4,5,6]; arr.splice(1,2,'hellow');//这句话的意思从下标为1开始 将之后的俩个元素替换成hellow console.log(arr);//[1, "hellow", 4, 5, 6]
ES5新增数组方法
01,静态方法(静态方法可直接调用 不用new 直接使用 类名.方法 调用)
isArray() 判断是否为数组方法,返回值为布尔值
var arr = [1,2,3]; var str = '我是字符串'; console.log(Array.isArray(arr));//true console.log(Array.isArray(str));//false
02,查找索引,位置,下标方法
1,indexOf(index,start) index代表查找的项 start 代表查找的起始位置(默认是下标0) 返回值为查找项的第一个下标 找不到则返回-1
var arr = [1,2,3,4,5,6,7]; console.log(arr.indexOf(3));//找到的下标为2 var arr1 = [1,2,3,4,5,3]; console.log(arr1.indexOf(3,3));//指的是从下标3开始查找项为3的下标,返回值为5
2,lastIndexOf(index,start) lastIndexOf 跟indexOf用法基本一致,区别是lastIndexOf返回的是最后一个下标 找不到同样返回-1
var arr = [1,1,1]; console.log(arr.lastIndexOf(1));//从最后开始查找 找到的第一个下标为2 var arr1 = [1,2,3,4,5,3]; console.log(arr1.lastIndexOf(3,4));//从下标4开始查找 找到最后一个项的下标为2
03,数组的迭代方法
1,forEach()循环
功能:循环遍历数组中的每个元素,对数组的每个元素做运算 比for循环简便 但不能随意退出 不能使用 break;
参数:回调函数
返回值:无
var arr = [1,2,3,4,5,6]; arr.forEach(function(item,index,arr){//第一参数item表示的是每个项 第二个参数index表示的是每个下标 第三个参数arr表示的是数组对象 arr[index] = item+1;//这里所做的是将每一项的值加1 }) console.log(arr);// [2, 3, 4, 5, 6, 7]
2,map()映射
功能:返回一个新数组,新数组中的元素为原始数组元素调用函数处理后的值。不改变原数组
参数:回调函数
返回值:新的数组
var arr = [1,2,3,4,5,6]; var newArr = arr.map(function(item,index,arr){//第一参数item表示的是每个项 第二个参数index表示的是每个下标 第三个参数arr表示的是数组对象 return item+1;//这里所做的是返回每一项的值并加1 }) console.log(newArr);// [2, 3, 4, 5, 6, 7] console.log(arr);// [1, 2, 3, 4, 5, 6]
3,filter() 过滤
功能:检测数值元素,并返回符合条件所有元素的数组
参数:回调函数
返回值:新的数组
var arr = [1,2,3,4,5,6]; var newArr = arr.filter(function(item,index,arr){//第一参数item表示的是每个项 第二个参数index表示的是每个下标 第三个参数arr表示的是数组对象 return item>3;//返回大于3的值 }) console.log(newArr);// [4, 5, 6] console.log(arr);// [1, 2, 3, 4, 5, 6]