码迷,mamicode.com
首页 > 编程语言 > 详细

JS中的数组与对象

时间:2017-09-10 13:32:17      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:cas   substr   截取   locale   case   join()   开始   string类   使用   

一、数组:

 1、数组的基本慨念:
       数组是在内存空间中连续存储的一组有序数据的集合
      元素在数组中的顺序,成为下标。可以使用下标访问数组的每个元素
 2、如何声明一个数组
     ① 使用字面量声明:
         在JS中,同一数组,可以存储各种数据类型
         例如:var reg = [1,"换个影子",true,{},null,func];  //调用数组中的函数:reg[5]();
     ②  使用new关键字声明: var reg = new Array(参数);
          参数可以是:
             a、参数省略:表示创建一个空数组;
             b、参数为一个整数:声明一个length为指定长度的数组。但是,这个length可以随时可变可追加
       

var reg = new Array(5);
reg[6]=1;


            c、参数为逗号分隔的多个数值:表示数组的多个值
               new Array(1,2,3,4) == [1,2,3,4];
    3、数组中元素的读写和增删  
      ① 读写:通过下标访问元素,下标从0开始 reg[1]="haha"
      ② 增删:
         a、使用delete关键字,删除数组的某一个值,删除之后,数组的长度不变,对应位置元素变为undefined。eg :delete reg[1];
         b、reg.pop():删除数组的最后一个值,长度-1。相当于reg.length -= 1;
         c、reg.shift():删除数组的第一个值。长度-1.
         d、reg.unshift(新值):在数组的第0个位置新增一个值;长度+1.
         e、reg.push(新值):在数组的最后一个位置新增一个值;长度+1.   
         f、直接访问数组没达到的下标,可以动态追加
            reg[100] = 1;中间如果有空余下标,将存入undefined;
    
    4、数组中的其他方法:
       ① join():【原数组不会被改变】将数组用指定分隔符连接为字符串,并返回。当参数为空时,默认用逗号分隔;  var str = arr.join("-");
       
       ② concat():【原数组不会被改变】  将数组与多个数组的值连接为新数组,并返回 var arr2= arr.concat(arr1,arr1)
           concat()连接时,如果有二维数组,则至多能拆一层[]
           [1,2]. concat([3,4],[5,6]) ->  [1,2,3,4,5,6]
           [1,2]. concat([3,4,[5,6]]) ->  [1,2,3,4,[5,6]]
      
       ③ push():数组最后增加一个,unshift()  数组开头增加一个。返回新数组的长度; 原长度+1
           pop():删除数组最后一个,   shift()删除数组开头一个。  返回被删除的值    原长度-1
            ps:上述方法均会改变原数组
     
       ④ reverse():【原数组被改变】 将数组反转倒序输出 arr.reverse();
     
       ⑤ slice(begin,end):【原数组不会被改变】截取数组中的某一部分,并返回截取的新数组
          》》传入一个参数,表示开始区间,默认截到数组最后
          》》传入两个参数:表示开始和结束的下标,左闭右开区间
          》》两个参数可以为负数,表示从右边开始数,最后一个值为-1;
     
       ⑥ sort():【原数组被改变】 将数组进行升序排列:
          》》默认情况下,会按照每个元素首字母的ASCII值进行排序
           [1,3,2].sort() -> [1,2,3]
          》》传入一个比较函数,手动指定排序的函数算法
             函数将默认接收两个值a、b,如果返回值>0,则证明a>b;
         

arr.sort(function(a,b){
         return a-b;        //升序排列
       //  return b-a;        //降序排列      
 });


        
       ⑦ indexOf(value,index):返回数组中第一个value值所在的下标,如果没有找到返回-1;
           lastIndexOf(value,index):返回数组中最后一个value值所在的下标,如果没有找到返回-1;
              》》如果没有指定index,则表示全数组查找value;
              》》如果指定了index,则表示从index开始。向后查找value;
       ⑧ forEach():专门用于循环遍历数组,接收一个回调函数,回调函数接收两个参数,第一个参数为数组的值,第二个参数为下标
           【IE8之前不支持此函数】
     

  arr.forEach(function(item,index){
        console.log(item);        //单独打印数组的每个值
})

 


       ⑨  map():数组映射。使用方法与forEach()相同。不同的是,map可以有返回值,表示原数组的每个值进行操作后,返回一个新数组
           【IE8之前不支持此函数】
        

 var arr1 =  arr.map(function(item,index){
          console.log(item);        //单独打印数组的每个值
          return item+2;             //返回的新数组的值为原数组的值加2
})


    5、二维数组与稀疏数组(了解)     
       ① 二维数组:数组中的值,依然是一个数组形式。
          eg:var arr = [[1,2],[3,4],[5,6]];//相当于两行三列
           读取二维数组:arr[行号][列号];
       ② 稀疏数组:数组中的索引是不连续的。(length要比数组中实际的元素个数大)

二、内置对像

1、Boolean 类
       也有两种声明方式: 可以使用字面量方式声明一个单纯的变量;用typeof检测为Boolean类型
                    也可以使用new Boolean()声明一个boolnean类型的对象。用typeof检测为Object类型

var bool = true;
var bool1 = new Boolean(true);

2、Number类
    Number.MAX_VALUE:返回NUmber类可表示的最大值
    Number.MIN_VALUE:返回NUmber类可表示的最小值
☆ num1.toString():将数值类型(num1)转换为字符串类型
    num1.toLocaleString():将数值按照本地格式顺序转换为字符串,一般从右开始,三个一组加逗号分隔
☆ num1.toFixed(n):将数字保留n为小数,并转为字符串格式
    num1.toPrecision(n):将数字格式化为指定长度,
        n表示不含小数点的位数长度,如果n小于原数字长度,则用科学计数法表示,如果n大于原数字长度,则小数点后补零;
    num2.valueOf():返回Number对象(num2)的基本数字值;

3、 string类
    1、 属性:.length: 返回字符串的长度,即字符数;
       字符串支持类似数组的下标访问方式:str[0];
    2、.toLowerCase(): 将字符串所有字符转成小写
        .toUpperCase():将字符串所有字符转成大写
     3、.charAt(n):截取数组的第n个字符相当于str[n];
     4、.substring(begin,end):从字符串中截取子串
         》》只传入一个参数:从begin到最后
         》》传入两个参数:从begin到end的区间,左闭右开;
     5、.indexOf("str",index):查找子串在字符串中出现的位置,如果没有找到,返回-1,其他同数组的indexof方法;
        .lastIndexOf("i",4):同数组;
     6、.split("分隔符"):将字符串用已指定分隔符分隔,存入数组中,传入空""表示字符串的每个字符分开放入数组
     7、.replace("old","new"):将字符串的第一个old替换为new。 返回新字符串   原字符串不变
        》》第一个参数可以是,普通字符串,也可以是正则表达式
        》》如果是普通字符串,则只替换第一个old,如果是正则表达式,则可以根据正则的写法要求,进行替换

4、Date时期类 
  1、 new Date():返回当前最新时间
     new Date("2017,8,23,12:34:56");返回指定的时间
  2、常用方法:(当前时间)
   .getFullYear():获取4位年份
   .getMonth():获取月份0-11
   .getDate():获取一个月中的第几天  1-31
   .getDay():获取一周的第几天  0-6  0:表示周天
   .getHours():获取小时
   .getMinutes():获取分钟
   .getSeconds():获取秒

 三、自定义对象
 1、基本慨念:
     ① 对象:对象是拥有一系列无序属性和方法的集合;
     ② 键值对:对象中的数据,是以键值对的方式存在。对象的每个属性和方法,都对应一个键名,以键取值;
     ③ 属性:描述对象特征的一系列变量,称为属性。【对象中的变量】
     ④ 方法:描述对象行为的一系列的函数,称为方法。【对象中的函数】
     
 2、对象的声明:
     ① 使用字面量声明:var obj = {
                    key1 : value1,
                    key2 : value2,
                    func1 : function(){}
                  }
   
       >>对象中的数据是以键值对的形式存储,键与值之间用:分隔,键值对之间用,分隔。
       >>对象中的键可以是除了数组、对象以外的任何数据类型。但是,一般我们只用普通变量名作为键
       >>对象中的值可以是任何数据类型,包括数组和对象。
    
    ② 使用new关键字声明:var obj = Object();  //声明一个空的对象
                   Object.key1 = value1; //给对象添加键值对
                   Object.key2 = value2;
                   Object.func1 = function(){};
          
   3、对象中属性和方法的读写:
    ① .运算符:
       对象外部: 对象名.属性  对象名.方法
       对象内部: 对象名.属性 ,或this.属性
     
     
    ② 通过["key"]调用: 对象名["属性名"]  对象名["方法名"]();
        >>如果键中包含特殊符号,则只能用第②中方式;     
        >>对象中直接写变量名,默认为调用全局变量。
         如果需要调用对象自身的属性或方法。需要使用对象名.属性或this.属性。
           rson.age  this.age 都可以,但推荐使用this关键字。
    ③ 删除对象的属性和方法:delete 对象名.属性名/方法名
          delete person.age;

JS中的数组与对象

标签:cas   substr   截取   locale   case   join()   开始   string类   使用   

原文地址:http://www.cnblogs.com/2502778498spw/p/7489417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!