数组常用函数:

  相同点 不同点 使用
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]

 

 

 

posted @ 2021-06-16 09:08  惊沙男孩  阅读(274)  评论(0)    收藏  举报