JavaScript数组

  JavaScript数组

作用:存储一堆变量,不限制存储的数据类型,内存中连续存储多个数据的存储空间,用统一的名字,

优势:连续存储多个数据

创建数组的方法:

1.var arr = [ ]    创建一个空数组

2.var arr1 = new Array( n)    创建一个已知数据个数的空数组,n表示数据个数

数组不显示存储类型:

例:var array = ["ABC",true,3.14];

通过数组的下标来选中相应的数据:

数组下标为:

例:var arr =[a,b,c,d,e]

                      0  1 2 3 4

替换数组中的某个内容:

arr        [0]    =     "8"

数组名   被替换的下标          替换的数据

console.log(arr.length)      获取最后一个元素

length表示数组的最后一个下标加一,通常表示数组数量

  删除数组某个元素:

例:1.arr[1]=""   

  删除最后一个元素

例:2.arr.length-- 

数组类型:

  原始类型: number string boolean undefiend null
                    数据直接保存在变量本地的数据类型
  按值传递:两个变量之间赋值时,或者将变量作为参数传入函数时,其实仅将原变量中的值赋值一个                           副本给对方
       修改新变量,不会影响原变量的值


引用类型: 数据无法直接保存在变量本地的数据类型
                 因为变量只允许保存一个值,而引用类型往往同时保存多个值
                会在window对象之外,创建一个独立的存储空间,并且每个独立的存储空间都有一个唯一的地                   址
                变量中依然保存的是一个值,只是数组中仅保存地址而已 。他传递的时一个地址,其本质也算是按值传递,这称为引用

垃圾回收:JS会自动释放不在被任何变量引用的对象

垃圾回收器:专门回收不在使用的对象的小程序

      1.记录每个对象,每几个变量引用着,每多一个变量引用计算器就+1,当一个变量赋值为null就表示该变量不被引用,则计数器-1

      2.当计数器成为0时,表示对象都不再被任何变量引用,就开始回收对象。

关联数组:可以自定义下标名称的数组,下标为数字的数组是索引数组。

    作用:让每个数据有明确的含义,查找更方便。

例:var arr=[]

  arr["name"] = "科比"

  arr["sex"] = "男" 

  arr["score"] = 18

  arr["class"] = 5  

 console.log(arr["name"])     直接通过自定义下标名字查找对应的数据

数组的API

  转字符串:String(对象):将数组中每个元素都转换为字符串,再用,链接

        (对象名)arr.join:将数组种的每个元素转换为字符串

通过id来获取标签对象

 document.getElementById("Id名")

拼接和选取:

作用:将其他元素或者另一个数组,凭借到当前数组结尾

例:var arr=[1,2,3]   

  var arr2=[4,5]

  arr = arr2.concat(7,8,arr2)

注意:concat无权修改原数组,只能返回新数组,必须使用变量拼接后返回的值,还会打散参数中的子数组为单个元素,单个拼接   

数组的修改(删除,插入,替换)

删除数组从starti开始的第n个元素

arr.splice(starti,n)

例:var arr[1,2,3,4,5]

     0 1 2 3 4 

  var ar2 = arr.splice(3,5)

注意:可以修改原数组

length -n(支持负数)

删除:例:var a = [1,2,3,4]

   删去开头2个数,并且接到结尾

  var cont = a.splice(0,2)

  a = a .concat(cont)

插入:

  arr.splice(starti,0,value1,value2...)starti表示位置,0表示一个都不删,原位置保持不变,向后顺移

  

替换:

  arr.splice(starti,n,value1,value2)

  表示先删除从starti位置开始的n个元素,再在starti位置插入value1,value2

     

原文地址:https://www.cnblogs.com/hzqzwl/p/11255676.html