javascript笔记(四)

1. ***数组
排序: 
 1. 冒泡排序:
 2. arr.sort(): 
    默认: 将数组中每个元素,都转为字符串,再升序排列。
    何时: 仅限于排序字符串元素时
    解决: 今后,只要不是按字符串排列,都要自定义比较器,传如sort方法。
     1. 自定义比较器函数
      比较器函数:
        专门比较任意两数大小的函数:
        规定:function compare(a,b){
如果a>b就返回正数
                如果a<b就返回负数
                        否则返回0
                return a-b;
             }
     2. 将比较器函数作为参数,传入sort方法中。
arr.sort(compare);
      强调: 不加()


   sort方法的原理:
     1. 如果函数执行时,缺少一段逻辑(代码段),就需要用函数类型的参数,从外部传入。
     外部传入的函数,在内部被调用。
     强调:将函数作为参数传递时,不加()
     2. js作用域 vs Java作用域
        js 2级: 全局,函数
 js中块中声明的变量,出了块,依然可用。甚至会被声明提前到块外。
        Java 3级: 
全局,函数,块(if,for...)
          java中块中声明的变量,出了块,无法使用。
     3. 创建函数: 
       如果不希望被提前,可用:
         var 函数名=function(...){...}
       揭示: 函数其实也是一个对象
             函数名其实就是引用函数对象的普通变量而已。


   颠倒比较器函数的正负号,可改升序为降续
    function compare(a,b){
return b-a;
    }


栈和队列: js中没有专门的栈和队列类型
          都是用普通数组模拟的
  栈: 一端封闭,只能从另一端进出的数组
   FILO
  何时使用: 只要希望始终使用最新加入数组的元素时,就用栈结构。
  如何使用: 
    1. 结尾出入栈:
       1. 入栈: arr.push(值)
       2. 出栈: var last=arr.pop();
       优点: 每次出入栈,其余元素的位置不受影响。
    2. 开头出入栈:
       1. 入栈: arr.unshift(值)
       2. 出栈: var first=arr.shift();
       缺点: 每次出入栈,其余元素的位置都会变化。


 队列:只能从一端进入,从另一端出
   FIFO
  结尾入队列: arr.push(值) 
  开头出队列: var first=arr.shift()

  何时使用:必须按照先来后到的顺序使用元素时。

1. ***数组:
二维数组:
  什么是: 数组中的元素,又引用了另一个子数组。
  何时使用:
    1. 存储横行,竖列的二维数据时
    2. 需要对数组中的元素,进一步细分类时
  创建: 
   1. 在创建同时,初始化数组的内容:
    var arr=[
      [值1,值2,...],
      [值1,值2,...],
                ...
    ]
   2. 先创建空数组,再添加子数组
    var arr=[];
    arr[0]=[值1,值2,...];
  访问二维数组中的元素:
   arr[r][c]
  强调: 二维数组,行下标不能越界,会报错
  遍历:外层循环,控制行,内层循环控制列
   for(var r=0;r<arr.length;r++){
       for(var c=0;c<arr[r].length;c++){
           arr[r][c]//当前元素
       }
   }


2. ***String:一串字符组成的只读数组
   vs 数组: 
    相同: 1. 也可用下标,访问每个字符
          2. 也有length属性,表示字符的个

          3. 用for遍历每个字符
          4. 凡是不直接修改原数组的方法,字符串也可使用: slice concat


   内置对象:ES标准中规定的,浏览器厂商已经实现的对象。
    11个: String Number Boolean
          Array Date Math RegExp
          Error
          Function Object
          Global(浏览器中被window代替了)
***包装类型:专门封装原始类型的值,并提供对原始类型值进行操作的API
   为什么: 原始类型的值本身没有任何功能。
   何时使用:只要试图对原始类型的值调用方法时,都会自动创建包装类型的对象,来封装原始类型的值。调用的方法,其实是包装类型对象的。而不是原始类型值的。
   包装类型的对象,一旦方法执行完,就释放


String API: 所有String API都无法修改原字符串,而是返回新字符串。
1.大小写转换: 
  何时使用:不区分大小写时
  如何转换:
    str.toUpperCase();//转大写
    str.toLowerCase();//转小写
2.获取指定位置的字符:
 获取指定位置的字符:str.charAt(i)=>str[i]
 获取指定位置字符的unicode号:
   var num=str.charCodeAt(i);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值