js书写技巧-jsvascrpt数组

技术 2019-01-29

数组

数组是一段线性分配的内存,主要通过整数计算偏移并访问其中元素。在其他开发语言中,数组是一个性能比较出色的数据结构。但是,在JavaScript中没有类似数据结构。


JavaScript中提供一种类似数组、具有数组特性的对象来完成其他语言中数组的功能。JavaScript中数组将下标转为字符串,作为对象的属性。这就导致JavaScript中数组比其他语言的数数据结构要慢。当然,这样的结构使用起来也比较方便,其获取与更新都与对象类似。 

var narray = [0,1,2,3,4,5] 
console.log(narray[3])//3 
console.log(narray['3'])//3

Javacript数组长度

在JavaScript中,每个数组对象都有length属性。但是JavaScript中,数组并不是固定大小的,当读取、设置大于length原始时,不会有数组越界等异常。

    var narray = [0,1,2,3,4,5]; 
console.log(narray[6]);//undefined 
console.log(narray.length);//6
narray[6]=6 
console.log(narray[6]);//6 
console.log(narray.length);//7

如上代码,如果获取数组中大于length的元素,会返回undefined。但是如果设置大于length的元素,数组的length属性将自动扩展到相应长度。基于这个特性,可以很简单的实现队列入队功能。

    var narray = [0,1,2,3,4,5]; 
console.log(narray.length);//6 
narray[narray.length]=6//与narray.push类似
console.log(narray.length);//7

在JavaScript的数组中,length是可以改变的,设置更大的length不会给数组分配更多的空间,但是如果将length设置较小,则大于等于length的下标元素都将被删除。

数组删除元素

Javascript数组本质上是一个对象,可以通过delete删除其中一个属性,如: 

    var narray = [0,1,2,3,4,5,6,7]; 
delete narray[2]//[0,1,empty,3,4,5,6,7] 
console.log(narray[2])//undefined

使用delete可以删除属性,但是会在数组中留下一个空洞,且长度未发生变化。

JavaScript提供了splice进行数组元素删除(替换)

    var narray = [0,1,2,3,4,5,6,7]; 
narray.splice(2,1)//[2] 
narray.splice(1,1,1,2)//删除第二个元素,并从第二个元素开始插入1,2两个元素


楼主残忍的关闭了评论