数组

来源:互联网 发布:搭建个人云软件 编辑:程序博客网 时间:2024/05/22 00:45

 使用引用类型的对象:使用变量等效于使用对象地址,即等效于使用对象内容。

数组创建的另一种语法:var arr=new Array(整数n)。[undefined,.....]new Array表示要在堆中创建一个数组类型的存储区域;n表示初始创建元素的个数,所以会有歧义。元素默认为undefined,输出时变为空字。
null:代表一个变量没有引用任何对象。当需要主动释放对象时,给变量赋值为null;堆用完不再使用后赋值为null;释放的对象不能被找回; 
unll与undefined的区别:unll表示一个变量没有指向对象,用于主动释放对象,undefined表示未赋值,用于自动初始化未赋值的变量。
垃圾回收:将变量赋值为null,之后对象扔在堆区,垃圾回收程序清除对象。
垃圾回收程序与js程序在后台同时运行。
给一个变量重新赋值时,[ ]创建一个新数组对象,该对象的地址在变量栈区替换原地址,该变量就引用了新的对象,旧的对象被释放等待垃圾回收。
访问数组:数组是一组元素的集合,如何使用其中的一个元素?每个元素都有一个下标。下标是唯一标识一个元素的序号从零开始;数组最后一个元素的下标是元素个数减一。使用时,变量名+下标。越界读取元素返回nudefined。
js内置对象不仅封装存储,而且内部还封装了常用的API(已经实现的方法可直接调用);
数组对象提供的API:.length
js数组可以根据需要自动调整大小(自动扩容保证程序正常执行)
数组的扩容和缩容(截断):设置length属性的值。被截断后的元素不能被找到也不能被回收,随数组对象一起被回收。
arr[arr.length]=元素 在任意数组后追加一个元素
数组的遍历(为了对数组中的对象统一操作):采用for循环:for(var i=0;i<arr.length;i++){arr[i] 当前对象;操作}
关联数组:数组下标可以自定义名称。arr["姓名"]="张相" arr["成绩"]=80 arr["是否帅哥"]=true(实际上类似于普通数组)。优势在于可以给每个对象起名。关联数组的length属性作废了,所以要用for in遍历。
遍历关联数组:for(var key in arr){arr[key]表示正在遍历的元素的值}。
关联数组直接定义:{"n1":value,"n2":value,"n3":value}
重点*冒泡排序:例子
          var sz=[9,18,22,0,1,27];
  for(var n=1;n<sz.length;n++){
  for(var i=0;i<sz.length-n;i++)
  {if(sz[i]>sz[i+1]){x=sz[i];sz[i]=sz[i+1];sz[i+1]=x}}
  }
  document.write(sz);
数组常用方法:1.x.toString():任何对象都有此方法,作用:将任何对象转为字符串。x.toString,一般不主动调用。js在需要时自动调用。
                            2.x.valueof():同toString。
                            3.chars.join("分隔符"):将数组转为字符串,可以定义分隔符。(x.toString的分隔符为逗号)。可用于拼接数组中的字符串。
                            4.arr.concat(元素值,[数组],...):用于追加、拼接。此API不能修改任何变量,所以需要创建新变量。
                            5.arr.slice(a,b+1):创建新变量,截取数组中下标从a到b位置的元素。因为"含头不含尾",所以要b+1。
                            6.arr.splice:删除、插入、替换。删除:arr.splice(a,b)替换:arr.splice(a,b,值1,值2)插入:arr.splice(a,0,值1,值2)
0 0