首先先来看一下有哪些方法arr为要操作的数组
| 作用 | 方法名 | 返回值 | 说明 | 补充 |
|---|---|---|---|---|
| 转字符串 | arr.toString() | 字符串 | 将arr转为字符串类型 | 不能转换Object类型 未修改原数组 |
| 转字符串 | arr.join(separator) | 字符串 | 将arr转为字符串类型 separator为拼接的符号 |
同上 未修改原数组 |
| 从后删除 | arr.pop() | 被删除的项 | 将arr的最后一项删除 | 修改原数组 |
| 从后添加 | arr.push(item) | 新数组长度 | 将item添加到arr最后一位 | 修改原数组 |
| 从前删除 | arr.shift() | 被删除的项 | 将arr的首项删除,其余下标前移 | 修改原数组 |
| 从前添加 | arr.unshift(item) | 新数组长度 | 将item添加到arr首位,其余下标后移 | 修改原数组 |
| 插入 | arr.splice(index,length,…item) | 删除项目的数组 | 从index位插入…item参数,并且删除index后length位 | 修改原数组 |
| 连接 | arr.concat(arr2) | 连接后的新数组 | arr后连接arr2 | 参数不固定 未修改原数组 |
| 裁剪 | arr.slice(start, end) arr.slice(start) |
裁剪出的数组 | 从arr中裁剪出[start,end)数组,只有一个参数时,从start到末尾 | 未修改原数组 接受负参数 |
| 排序 | arr.sort(func) | 排序后的数组 | 不传参数时,会按照ASCLL的顺序排列,只比较一位。 传参数时,需要传递一个函数,相邻位置两两比较,根据返回结果正负决定是否交换 |
修改原数组 |
| 遍历 | arr.forEach(func) | 无 | 遍历arr数组,接收一个处理函数func,该函数接受3个参数ele(项目值)、index(项目索引)、self(项目本身) | 未修改原数组 |
| 生成数组 | arr.map(func) | 新的数组 | 将arr进行遍历,通过处理函数func,返回值为新数组的每项,func接受3个参数(同上) | 未修改原数组 |
| 过滤数组 | arr.filter(func) | 过滤后的数组 | 将arr进行遍历,通过处理函数func,返回值为true则保留当前项,func接受3个参数(同上) | 未修改原数组 |
| 叠加 | arr.reduce(func) | 循环最后一次的返回结果 | 将arr进行遍历,通过处理函数func,返回值为下一次的ret值,func接受4个参数ret(上一次循环的返回值)、ele(项目值)、index(项目索引)、self(项目本身) |
示例数组var arr = [8,4,6,5,2,1]
1、toString()
- 将arr转为字符串
var res = arr.toString() //res结果为"8,4,6,5,2,1"
2、join()
- 将arr通过”-“连接成字符串
var res = arr.join("-") //res结果为"8-4-6-5-2-1"
3、pop()
- 将arr最后一删除项
var res = arr.pop() //res结果为1
返回被删除的项
4、push()
- 给arr末尾添加10
var res = arr.push(10) //res结果为7
返回新的数组长度
5、shift()
- 将arr首项删除
var res = arr.shift() //res结果为8
返回被删除的项
6、unshift()
- 给arr首位添加10
var res = arr.unshift(10) //res结果为7
返回新的数组长度
7、splice()
- 将arr中4,6,5替换为四,六,五
var res = arr.splice(1,3,"四","六","五") //res结果为[4,6,5]
返回裁剪的数组
8、concat()
- arr连接[6,6,6]
var res = arr.concat([6,6,6]); //res结果为 [8, 4, 6, 5, 2, 1, 6, 6, 6]
返回新的数组
- arr连接”好好学习”和”天天向上”
var res = arr.concat("好好学习","天天向上") //res结果为[8, 4, 6, 5, 2, 1,"好好学习","天天向上"]
9、slice()
- 截取后3位置
var res = arr.slice(-3) //res结果为[5,2,1]
- 截取前两位
var res = arr.slice(0,2) //res结果为[8,4]
10、sort()
将arr升序排列
var res = arr.sort(function(a,b){return a - b// 8 - 4 > 0 true交换})//res结果为[1,2,4,5,6,8]和arr一样
11、forEach()
打印数组每一项
arr.forEach(function(ele,index,self){console.log(ele)})
12、map()
得到一个数组,每一项值为arr数组+2所得
var res = arr.map(function(ele,index,self){return ele + 2;})//res结果为[10,6,8,7,4,3]
13、filter()
过滤掉arr中的单数
var res = arr.filter(function(ele,index,self){return (ele%2) === 0;})//res结果为[8, 4, 6, 2]
14、reduce()
求arr中所有数组之和
var res = arr.reduce(function(ret,ele,index,self){return ret += ele;},0)//res结果为26//0为设置初始的ret值
常用的操作都列举出来了,以上仅代表个人的理解,欢迎各位玩家留言指正
