数据结构(数组,对象。。。)

在编程语言中,数据集合表示一类数据的总和,集合即时一种数据存储结构也是数据组织结构,更是一种数据处理结构,数据集合有多种类型,如下:

 数组Array:固定大小的有序集合

数组列表ArrayList:对象的动态数组类型

列表List:可通过索引访问的对象的强类型列表

字典Dictionary:表示键和值的集合

有序列表SortedList:与哈希表类似

哈希表Hashtable:名/值对,类似字典,比数组更强大

栈Stack:后进先出栈集合

队列Queue:先进先出栈集合

1.Array数组:有序的数据集合--元素Element+下标Index---已编码的值的集合类型

var a=[//数组

    1,//该值隐藏编码为0

    true//该值隐藏编码为1

]     

  数组的操作方法:

     检索:使用for/in循环 for(var i in arr){ console.log(arr[i])}    2.for (var i,i<arr.length,i++){ console.log(arr[i])}

           es5使用forEach() every() some() map() filter()

     添删元素:

             末尾添删:push()     pop()

             首部添删:unshift()   shift()

             数组连接:concat()

            插入删除替换数组元素:splice(startIndex,number,insplace)

            截取数组:slice()

            数组排序:升序--sort()    翻转-- reverse()

数组转字符串:toString()    toLocaleString()   join()

字符串使用方法:

       查找字符串:charAt(index)   charCodeAt(index)  indexOf(index) lastIndexOf(index)

        正则匹配字符创:var s="http://www.baidu.com"

                  s. search("//")-->5

                 s. match(/h/g)-->[h]

        截取字符串:slice()   substr()  substring()

       编辑字符串:replace() toLocaleLowerCase() toLocaleUpperCase() toLowerCase()toUpperCase()

             替换子字符串:s.replace(/http/,"https")或s.replace("http","https")

                 var s='script language="javascript" type="text/javascript"'

                var f=function($1){ return $1.substring(0,1).toUpperCase()+$1substring(1)}

               var a=s.replace(/(\b\w+\b)/g,f) ---高级用法使用函数

               console.log(a)-->'Script Language="Javascript" Type="Text/Javascript"'

    字符串装数组:s.split()

      javascript任何对象都支持toString(),下面重写一个toString()

     String.prototype.toString()=function(color){

     var color=color||"red"

    return  '<font color="'+color+'">'+this.valueOf()+'</font>'

}

      s.toString("blue") -->显示蓝色字符串

2.Object对象:无序的数据结合----已命名的的值的集合类型   

 var o={//对象

         x:1,  //该值的命名为x

         y:true,//该值的命名为y

}

对象的分类:

   原生对象:Object   Function   Array   String   Boolean   Number   Date   RegExp  Math

                      Error   EvalError    RangeError    ReferenceError   SyntaxError    TypeError   URLError 

   宿主对象:非javasript定义对象,Window Document History Location Screen Navigator Body Form Event..

对象的常见用法:创建 设置 查找 删除 检测 枚举

 对象的基本操作:创建对象 引用对象 销毁对象

创建对象:

             通过原生对象创建:  var o=new Object()    var o=new array()     

                    自定义创建: var  o=new MyClass()       ---使用new的后面是个构造函数     

                       直接量定义对象: var o={ }

引用对象:

         o={x:1,y:true}  //创建对象,并引用该对象给变量o

         o1=o;//复制变量o

         alert(delete o);//删除成功

        alert(o1.x)-->1  alert(o.x)-->提示没有定义对象,因为o被删除了

销毁对象:javascript提供一套垃圾回收机制,自动回收程序中无用的存储单元  相当于 o=null

属性的基本操作:

      定义属性 :   var     o={x:1,y:true} 

              ES5新增定义属性:2个

                             Object.defineProperty(object,propertyname,descriptor)

                              Object.defineProperties(object,descriptors)

      访问属性 :     o.x 或者o['x']

                   ES5新增访问属性: 4个

                       Object.getPrototypeOf(object)      Object.getOwnPropertyDescriptor(object,propertyname) 

                        Object.getOwnPrototypeNames(object)  Object.keys(object)

     赋值和删除属性:o.x=2  o.y=false    //    delete o.x

对象的方法:

      var o={

       x:function(){

     alert(this.y) 

}

}

o.x();

var f=o;

f.y=2;

f.x();--->2

原生对象类型:构造对象 实例对象 原型对象

//构造对象

function f(){return this.x +this.y}

function MyClass(x,y){  //------构造对象:使用this关键字,且只能使用new运算符调用

      this.x=x;

     this.y=y;

     //this.add=f;//这句一般放在外面

}

 MyClass.add=f;//替代上句,每次创建一个对象创建一次add()

MyClass.prototype.add=f;//----

或Myclass.prototype={add:f;}---原型对象,只需创建一次add(),实例对象都继承它,提高了资源利用率

var o=new MyClass(10,20)//-----实例对象

 alert(o.add())-->30

猜你喜欢

转载自blog.csdn.net/wenmin1987/article/details/81835547