js数组的操作方法总结

原创 西红柿是小贱猫 教程 js基础知识 191阅读 2018-08-26 23:17:28 举报
方法名参数返回值简介
栈方法push任意数量推入后数组的长度将参数依次推入数组末端
pop推出的值将最后一项推出
队列方法shift推出的值将第一项推出
unshift任意数量推入后数组的长度将参数依次推入数组首端
排序方法reverse反转后的数组
sortfunction排序后的数组对数组进行自定义排序
操作方法concat任意数量拼接后的数组参数推入数组末端
slice一个或两个截取后的数组对数组进行截取
splice任意数量操作后的数组对数组进行增删改
位置方法indexOf一个或两个Number位置索引从前向后查找
lastIndexOf一个或两个Number位置索引从后向前查找
迭代方法forEach两个:第一个是要运行的函数,第二个是该函数的作用域对象,其中function接受三个参数,数组项,索引,数组本身undefined
map函数结果组成的数组
filter筛选结果组成的数组
some如果有一项返回true,则为true
every如果有一项返回false,则为false
归并方法reduce两个参数:第一个为要运行的函数,第二个为基础初始值,函数接受四个参数(前一个值,当前值,索引,数组本身)执行结果执行length-1次
reduceRight执行结果

对原数组产生影响的方法:

push,pop,unshift,shift,reverse,sort,splice

sort方法详解:

注意:默认是按照ASC码的大小进行排序,也就是说按照字符串进行排序

如果数组内都是数字,会将数字转换成字符串,然后按照从小到大的顺序进行排序,但是会造成一些问题,exp:[30,200,55]经过sort之后会变成[200,30,55]

自定义规则:sort方法可以接受一个函数进行自定义排序,传入的function接受两个参数,分别代表每次比较时用到的两个值,从头开始比较,如果返回的结果大于0,则交换,然后重新从头开始比较,如果小于等于0则不交换,然后进行下一项的比较。

应用:

从小到大排序:return a-b;

从大到小排序:return b-a;

性能问题:

sort排序实际上是一种冒泡排序,需要多次比较,对于一个长度为n的数组,最好的情况需要比较n次,最坏的情况需要比较n的平方次,所以会产生性能问题,需要根据实际的情况采取对应的措施。

exp:

如果对一个已经排好序的数组进行反转,使用reverse要比使用sort性能快很多
对特别大的数组进行排序的时候,可以根据情况进行优化(比如一个数组里面有1000项,分别是0到1000随机排序,可以把数组分成两组,小于500的一组,大于等于500的一组,然后分别排序,然后再拼接)

concat 和push区别:

push对原有数组有影响,concat对原有数组没有影响而是返回一个新的数组
如果参数是一个数组,push会把这个数组当做一项推入数组尾部,而concat则是把数组中的每一项当做一项推入数组尾部,如果参数中的数组还包含数组,那么被包含的这数组则不会被拆分,而是被当做一项直接推入。

slice详解:

使用方式:可以接受两个参数(都是数字),第一个表示开始的位置,第二个表示结束位置,返回的新数组是两个位置之间的内容(包含开始位置,但不包含结束位置)。

简单理解:从参数1的位置开始截取,截取参数2减参数1加1个项,exp:arr.slice(4,6)

不传参:直接返回副本

传一个参数:从开始位置截取到结尾

参数里有负值:用长度加上这个负值进行定位,从而实现倒着截取

参数错误:两种情况,长度超过数组限制或者类似slice(2,1)这样的,返回空数组;

splice详解:

接受一个参数:从该位置截取到最后

接受两个参数(a,b):从a位置开始删除b个

接受三个或多个参数(a,b,c):从a位置开始删除b个,然后插入c

应用:

删除:splice(0,2) //删除前两项

插入:spice(2,0,’red’) //在第二项后面插入’red’

替换:spice(2,1,’red’) //从第二项开始删除一个,即删除第二项,并在该位置添加’red’,

indexOf和lastIndexOf详解:

indexOf从前向后查找,lastIndexOf从后向前查找,如果存在第二个参数,则从该位置开始查找
如果找到了则返回对应的位置索引,
如果没找到返回-1;
在进行查找比对的时候使用全等(===)进行比对

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复