赞
踩
数组为连续且有序的数据结构,
所以若根据下标查找则很快,index[i]一步到位就可实现查询,若遍历查找则很慢(相对而言);
而插入和删除,除了数组末尾的增删很快,其它处则很慢,因为若数组某处要插入或删除一截,当前位置之后的所有元素都会受影响,都必须一个一个地从原来的位置挪动,而数组末尾的增删则不影响其它元素。
下面前三种是对原数组产生影响的增添方法,第四种则不会对原数组产生影响
push()
语法:array.push(item1, item2, ..., itemX)
push()方法接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度
unshift()
语法:array.unshift(item1,item2, ..., itemX)
unshift()在数组开头添加任意多个值,然后返回新的数组长度
splice()
语法:array.splice(index,howmany,item1,.....,itemX)
传入三个参数,分别是开始位置、0(要删除的元素数量)、插入的元素,返回空数组
concat()
语法:array1.concat(array2,array3,...,arrayX)
首先会创建一个当前数组的副本,然后再把它的参数中的元素逐个添加到副本末尾,所以时间复杂度为O(n),最后返回这个新构建的数组,不会影响原始数组。当 concat() 方法只有一个参数且参数为一个空数组时,它的时间复杂度为 O(1),因为它只需要返回一个新的空数组,在其他情况下,它的时间复杂度都为 O(n)。
前三种都会影响原数组,最后一项不影响原数组:
pop()
语法:array.pop()
pop() 方法用于删除数组的最后一项,同时减少数组的 length 值,返回被删除的项
shift()
语法:array.shift()
shift()方法用于删除数组的第一项,同时减少数组的 length 值,返回被删除的项
splice()
语法:array.splice(index,howmany,item1,.....,itemX)
传入两个参数,分别是开始位置,删除元素的数量,返回包含删除元素的数组
slice()
语法:array.slice(start, end)
用于创建一个包含原有数组中一个或多个元素的新数组,不会影响原始数组,返回切出来的数组。在实现上,slice() 方法使用指定的起始索引和结束索引从原数组中提取部分元素,然后将这些元素组成一个新数组并返回。在计算切片后新数组的长度时,对于起始索引和结束索引之间的元素,都需要进行一次遍历,这部分操作的时间复杂度为 O(k),其中 k 是切片后新数组的长度。因此,slice() 方法的时间复杂度为 O(n)。
splice() 慢,数组不定位置操作,时间复杂度O(n)
语法:array.splice(index,howmany,item1,.....,itemX)
传入三个参数,分别是开始位置,要删除元素的数量,要插入的任意多个元素,返回删除元素的数组,对原数组产生影响
indexOf()
语法:array.indexOf(item,start)
返回要查找的元素在数组中的位置,如果没找到则返回-1
includes()
语法:array.includes(item,start)
返回要查找的元素是否在数组中,找到返回true,否则false
find()
语法:array.find(function(currentValue, index, arr),thisValue)
返回第一个匹配的元素
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。