数组常用的方法
- 学习思路:通过四个维度
- 方法的作用
- 是否需要传參
- 是否有返回值
- 原数组发生改变
- 数组常用的方法
数组方法有:数组的增加,删除,替换,拼接,数组转字符串,数组翻转,克隆,截取,排序,遍历
var ary=["red","blue","green"]
- 数组的增加
-push()- 作用:给数组末尾增加一项
- 参数: 需要实参
- 返回值:数组的长度
- 原数组发生改变
let reg = ary.push("yellow"); 原数组:console.log(ary); //["red", "blue", "green","yellow"] 返回值:console.log(reg);//4
-
unshift()
- 作用:给数组开头增加一项
- 参数:需要实参
- 返回值:数组的长度
- 原数组发生改变
let reg = ary.unshift("yellow"); 原数组:console.log(ary); // ["yellow", "red", "blue", "green"] 返回值:console.log(reg);//4
-
splice(index,0,要添加的内容)
- 作用:增加
- 参数:(索引,删除0个,要添加的内容)
- 返回值:[] 空数组
- 原数组发生改变
添加的时候是在索引的前面添加
let reg = ary.splice(0,0,"红色"); //let reg = ary.splice(ary.length,0,"红色");//给数组末尾添加 原数组:console.log(ary);//["红色", "red", "blue", "green"] 返回值:console.log(reg);//[]
- 数组的删除
-shift()- 作用:删除数组开头一项
- 参数:不需要参数
- 返回值:删除的那一项
- 原数组发生改变
let reg = ary.shift(); 原数组:console.log(ary); // [ "blue", "green"] 返回值:console.log(reg);//red
- pop()
- 作用:删除数组末尾一项
- 参数:不需要参数
- 返回值: 删除的那一项
- 原数组发生改变
let reg = ary.pop(); 原数组:console.log(ary); // [ "red",blue"] 返回值:console.log(reg);// green
- splice(index,2)
- 作用:在指定的索引开始,删除几个;
- 参数:(索引,删除几个)
- 返回值:将删除的内容以一个新数组的形式返回
- 原数组发生改变
let reg = ary.splice(0, 2); //let reg = ary.splice(ary.length-1,1);//删除数组末尾一项 原数组:console.log(ary);//["green"] 返回值:console.log(reg);//["red", "blue"]
- 数组的替换
- splice(index,删除几个,要替换的内容)//删除几个不能为0,因为删除0个就是添加了
- 作用:从指定的索引开始,删除几个,并替换我们要替换的内容;splice(index,deleteCount,'aaa','hhh')
- 参数:三个参数
- 返回值:被删除的内容以一个新数组的形式返回
- 原数组发生改变
let reg = ary.splice(0, 2,"黄色","粉色"); 原数组:console.log(ary);//["黄色", "粉色", "green"] 返回值:console.log(reg);//["red", "blue"]
- splice(index,删除几个,要替换的内容)//删除几个不能为0,因为删除0个就是添加了
- 数组的克隆
- splice(0)
- 作用:克隆,其实是删除了原数组,而返回值是删除的原来数组的内容;
- 参数:参数为0
- 返回值:将删除的内容以一个新数组的形式返回
- 原数组发生改变
let reg = ary.splice(0); 原数组:console.log(ary);//[] 返回值:console.log(reg);//["red", "blue", "green"]
- concat()
- 作用:克隆
- 参数:空
- 返回值:将克隆的内容以一个新数组返回
- 原数组:不变
let reg = ary.concat(); 原数组:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);//["red", "blue", "green"]
- slice(为0或者空)
- 作用:克隆
- 参数:为0或者空
- 返回值:将克隆的内容以一个新数组返回
- 原数组:不变
let reg = ary.slice(); //let reg = ary.slice(0); 原数组:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);//["red", "blue", "green"]
- splice(0)
- 数组的查找/截取
- slice(n,m)
- 作用:从索引n开始查找到索引m,包括前不包括后
- 参数:两个
- 返回值: 查找到的内容以一个新数组返回
- 原数组不发生改变
let reg = ary.slice(0,2); 原数组:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);//["red", "blue"]
面试题:找到数组中[n,m]项
slice(n-1,m) // 第n项的索引是n-1,m的索引为m-1,但是slice包括前一项不包后括一项,m-1+1
- slice(n,m)
- 数组的拼接
- concat()
- 作用: 拼接/克隆数组
- 参数:不确定,相拼接几个就写几个数组名,也可以直接可以写成数组形式
- 返回值: 拼接成的新数组
- 原数组不发生改变
let reg = ary.concat("红色","黄色"); 原数组:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);// ["red", "blue", "green", "红色","黄色"]
let ary1 = ["red", "blue", "红色"]; let reg = ary.concat(ary,ary1); 原数组:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);// ["red", "blue", "green","red", "blue", "green", "红色"]
- concat()
- 数组转字符串
- toString()
- 作用:将数组转为字符串,默认以‘ ,’分割
- 参数:无
- 返回值:以逗号分割的字符串
- 原数组不发生改变
let reg = ary.toString(); console.log(ary);//["red", "blue", "green"] console.log(reg);// red,blue,green console.log(typeof reg);//string
- join()
- 作用:将数组转为字符串
- 参数:分割形式
- 返回值:以分割形式分割的字符串
- 原数组不发生改变
let reg = ary.join(); console.log(ary);//["red", "blue", "green"] console.log(reg);// red,blue,green console.log(typeof reg);//string
let reg = ary.join("+"); console.log(ary);//["red", "blue", "green"] console.log(reg);// red+blue+green console.log(typeof reg);//string
- toString()
- 数组的翻转
- reverse()
- 作用:数组翻转
- 参数:无
- 返回值:被翻转后的数组
- 原数组发生改变
let ary = ["我", "是", "谁"]; let reg = ary.reverse(); console.log(ary);//["谁", "是", "我"] console.log(reg);// ["谁", "是", "我"]
- reverse()
- 数组排序
- sort
ary.sort(function(a,b){ return b-a;//从大到小排序 //return b-a;//从小到大排序 })
- sort
- 数组常用但不兼容的方法
- indexOf()
- 作用:查找内容
- 参数:要查找的内容
- 返回值: 如果找到返回内容对应的索引,如果没找到返回-1
- 原数组不变
let ary = ["我", "是", "谁"]; let reg = ary.indexOf("我"); console.log(ary);//["谁", "是", "我"] console.log(reg);// 0
let ary = ["我", "是", "谁"]; let reg = ary.indexOf("去"); console.log(ary);//["谁", "是", "我"] console.log(reg);// -1
- indexOf()
- forEach(callback,thisArg)
- 作用:用来遍历数组
- 参数:两个,第一个是回调函数,第二个是改变this的
- 返回值: undefined 没有返回值
- 原数组不变
var ary=[10,20,30,40]; ary.forEach(function(item,index,input){ })
- map()
- 和forEach用法一样区别是map有返回值
- 非数组方法
-
给数组末尾添加
- ary[arr.length]=xxx
var ary=[1,2,3]; ary[ary.length]=4; console.log(ary)//[1,2,3,4]
- ary[arr.length]=xxx
-
删除数组最后一项
- ary.length--
- ary.length-=1
- ary.length=ary.length-1
-
实现数组克隆
- for循环
var ary=[1,2,3]; var ary1=[] for(var i=0; i<ary.length;i++){ ary1.push(ary[i]) } console.log(ary1)//[1,2,3]
-