数组常用函数:
| 相同点 | 不同点 | 使用 | |
|---|---|---|---|
| slice | 都可以截取数组,都是从左到右顺序截取 |
1.不会改变原数组 2.可以操作字符串 2.arg1<0 && arg2<0 && arg1<arg2,末尾为-1 3.左闭右开 4.第二个参数是下标 |
arr.slice(arg1,arg2); string.slice(arg1,arg2) 左闭右开(都是这样的区间,还没看到例外) |
| splice |
1.会改变原数组 2.删除时,将返回被删除的片段 3.arg1<0时,末尾为-1 4.arg1>length时,删除会无效,但是可以添加 5.第二个参数是个数(美团面试题) (splice是骗子(p),都说好了不改变的,你居然偷偷改变了!!) |
arr.splice(arg1,arg2,arg3,...) arg1是下标,包含此下标元素; arg2是删除个数; arg3是要添加的元素 |
| 头部 | 尾部 | 变化 | |
|---|---|---|---|
| 增加 | unshift() | push() | 原数组被改变 |
| 删除 | shift() | pop() | 原数组被改变 |
| 翻转 | reverse() | 原数组被改变 | |
| 转字符串 | join(xx) | 用xx间隔数组元素组成字符串 | 原数组没有变化 |
| 截取 | slice(index,endIndex) | 原数组没有变化 | |
| splice(index,num,addItem) | 可以实现shift、pop、unshift、push相同的效果 | 原数组被改变 | |
| 合并 | arr1.concat(arr2) | 原数组没有变化,返回一个新数组 | |
| 查元素索引 | indexOf(xx) | 查xx元素的索引,-1代表没找到 |
7句口诀:
shift、pop是删除,unshift、push是增加;(会改变原数组)
要想翻转用reverse;(会改变原数组)
聚会join组字符(串);
截取孪生slice、splice;
最终合并是concat();
随意点名用indexOf,返回-1是没找到。
切记:核心函数会改数组,字符检索保(持)原样(不改变原数组)
1. 数组函数的梳理:20210625
1.1 构造器:
Array(length);// 生成指定长度的数组,empty*length
new Array(n1,n2,...);// 参数个数等于0,或大于1,则生成由所有入参组成的新数组;参数个数为1,值为非数字类型,则生成该参数的新数组;参数个数为1且是数字,生成长度为n的数组,值为empty;
Array.of(8);// 会生成元素为8的新数组,而不是长度为8的空数组;
Array.from();// 把类似数组的可迭代对象转换为数组,eg:String、Map、Set、Object
1.2 Array的判断 (6种: 一种ES6,2种构造函数,3种prototype)
| 原理 | 实例 | 备注 |
| Array.isArray() | Array.isArray(a); | ES6才支持 |
| 基于构造函数原理:instanceof | a instanceof Array | 用于判断对象则不严谨,因为数组实例和对象实施都返回true |
| 基于constructor | a.constructor === Array | |
| Array.prototype.isPrototypeOf | Array.prototype.isPrototypeOf(a) | |
| Object.getPrototypeOf | Object.getPrototypeOf(a) === Array.prototype | |
| Object.prototype.toString | Object.prototype.toString.call(a) === '[object Array]' | 最常见 |
常用方法:
1.1 改变自身
| 含义 | 用法 | 备注 |
| copyWithin拷贝部分元素到某位置 | copyWihtin(target,start,end) | 左闭右开 |
| fill填补元素到某个区间 | fill(value,start,end) | 左闭右开 |
1.2 不改变自身:基本上是字符串相关、检索相关的函数
concat、join、slice、indexOf、lastIndexOf、includes(返回布尔值)、toString、toLocaleString、toSourse(未形成标准)
循环遍历:12个 [todo]
reduce()
entries() : 把一个数组转换成类数组可迭代的对象,和Array.from()互逆!
数组排序:
arr.sort((a,b)=>a-b);
寻找最值(大/小):
Math.max.apply(arr);
实用技巧:20210626午
1. 克隆数组:[...arr]
2. 合并数组:[...arr1,...arr2]
3. 去重数组:[...new Set([xx,xx,xx])]
参考链接:
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
梳理所有的JS数组函数 [太棒了,数组函数,一网打击~20210624]

浙公网安备 33010602011771号