zoukankan      html  css  js  c++  java
  • js笔记--基础部分

    A.字符串

      1.字符串是不可变的,如果对字符串的某个索引赋值,不会有报错,但字符串不会改变;以下这些方法本身不会改变原有字符串的内容,而是返回一个新字符串:

      2.toUpperCase()把一个字符串全部变为大写;

      3.toLowerCase()把一个字符串全部变为小写;

      4.indexOf()会搜索指定字符串出现的位置;

      5.substring(start,end)返回指定索引区间的子串,end可以省略(默认到字符串结束)

    B.数组

      arr=['A','B','C','D']
      1.arr.length; 显示数组arr的长度。若重新定义arr.length 则arr长度发生改变:
        例:arr.length=6 则arr=['A','B','C','D',undefined,undefined],
          arr.length=2 则arr=['A','B']
         即大于当前数组长度时,多出的元素值为undefined;小于当前数组长度时,相当于删除操作。

      2.与字符串不同,数组可以通过坐标索引,在原数组的基础上进行修改:
        例:arr[1]='b'; 则arr=['A','b','C','D']
         如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化:
        例:arr[6]='G' 则arr=['A','B','C','D',undefined,undefined,'G']
       *大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而,JavaScript的Array却不会有任何错误(但不建议使用)

      3.indexOf()函数,查找指定元素的下标索引,找到返回下标,没找到返回-1
        例:arr.indexOf('B') 返回1
          arr.indexOf('K') 返回-1,没找到元素位置,返回值为-1

      4.slice()切割数组函数,截取数组的一部分,返回一个新的数组:
        例:var a1=arr.slice(0, 2) 则a1=['A','B'] 截取数组下标从0-2,但不包括下标2
          var a2=arr.slice() 则a2=['A','B','C','D'] 不写任何参数相当于copy原数组
          var a3=arr.slice(2) 则a3=['C','D'] 从下标2处开始截取,直到数组结束
      
      5.push()向Array的末尾添加若干元素
        例:arr.push('E','F') 则arr=['A','B','C','D','E','F']

      6.pop()把Array的最后一个元素删除掉
        例:arr.pop() 则arr=['A','B','C']
       空数组继续pop不会报错,而是返回undefined

      7.unshift()函数,向Array的头部添加若干元素
        例:arr.unshift('E','F') 则arr=['E','F','A','B','C','D']

      8.shift()方法则把Array的第一个元素删掉
        例:arr.shift() 则arr=['B','C','D']
       空数组继续shift不会报错,而是返回undefined

      9.sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置,直接调用时,按照默认顺序排序

      10.reverse()反转函数,倒序

      11.splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素,该返回值为数组包含被删除元素
        例:arr=['A','B','C','D']
          // 从索引1开始删除3个元素,然后再添加两个元素:
          arr.splice(1, 3, 'Google', 'Facebook') 则arr=['A', 'Google', 'Facebook'],方法返回值['B','C','D']
          //从索引2开始删除2个元素 只删除,不添加:
          arr.splice(2, 2) 则arr=['A','B'],方法返回值['C','D']
          // 只添加,不删除:
          arr.splice(2, 0, 'Google', 'Facebook') 则arr=['A','B','C','Facebook', 'Oracle','D'],方法返回值[],因为没有删除任何元素

          12.concat()方法把当前的Array和另一个Array连接起来(该方法并没有修改当前Array,而是返回了一个新的Array)
        例:var added = arr.concat([1, 2, 3]); 则added=['A','B','C','D',1, 2, 3]
        concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里
        例:var added=arr.concat(1, 2, [3, 4]); 则added=['A','B','C','D',1, 2, 3,4]

       13.join()把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
        例:str=arr.join('-') 则str='A-B-C-D'

    C.对象

      1.访问不存在的属性不报错,返回undefined

      2.访问xiaohong的name属性,一般使用xiaohong.name,也可用xiaohong['name']

      3.判断一个对象是否包括某个属性,属性名 in 对象名,若返回值为true则包括,false则不包括
        例:var result='name' in xiaoming 若result=true,包括;result=false ,不包括
       这种方法判断的属性不一定是该对象自身的,也可能是他继承的

      4.过滤掉对象继承的属性,判断自身是否包含该属性,用hasOwnProperty()
        例:xiaoming.hasOwnProperty('name') true则存在,false则不包括

    D.循环

      1.for ... in对Array的循环得到的是String而不是Number. for(var key in arr)

      2.do { ... } while()循环要小心,循环体会至少执行1次,而for和while循环则可能一次都不执行

    E.Map(新增数据类型)

      1.Map一种键值对结构,结构上类似于二维数组,作用上和Python的字典类似,一个key对应一个value

      2.可以在初始化时为Map赋值
        例:var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
      3.也可先定义一个空的Map,后面再填值
        例:var m = new Map();

      4.Map的主要方法:
        (1)添加新的key-value ,多次对一个key放入value,后面的值会把前面的值冲掉
          m.set('Adam', 67);
        (2)判断是否存在某个key值,返回布尔值
          m.has('Adam');
        (3)获取某个key值对应的键值,若不存在该key值,返回undefined
          m.get('Adam');
        (4)删除某个key值对应的键值对
          m.delete('Adam');

    F.Set(新增数据类型)

      1.一组key的集合,但不存储value。由于key不能重复,在Set中,没有重复的key。功能相当于自带重复判断的数组

      2.定义Set
        例:var s1 = new Set(); // 空Set
        var s2 = new Set([1, 2, 3]); // 含1, 2, 3

        重复元素在Set中自动被过滤:
        var s = new Set([1, 2, 3, 3, '3']);
        s; // Set {1, 2, 3, "3"}

      3.Set的主要方法:
        (1)添加key值
        s.add(4);
        (2)删除key值
        s.delete(4);

    G.iterable(新增)

      1.遍历Array可以采用下标循环,遍历Map和Set无法使用下标。
       为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。

      2.具有iterable类型的集合可以通过新的for ... of循环来遍历
        例:
          var a = ['A', 'B', 'C'];
          var s = new Set(['A', 'B', 'C']);
          var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
          for (var x of a) { // 遍历Array
            console.log(x);
          }
          for (var x of s) { // 遍历Set
            console.log(x);
          }
          for (var x of m) { // 遍历Map
            console.log(x[0] + '=' + x[1]);
          }
      3.for ... of循环和for ... in循环有何区别?
       for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
       当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果:
          var a = ['A', 'B', 'C'];
          a.name = 'Hello';
          for (var x in a) {
            console.log(x); // '0', '1', '2', 'name'
          }
       for ... in循环将把name包括在内,但Array的length属性却不包括在内。for ... of循环则完全修复了这些问题,它只循环集合本身的元素:
          var a = ['A', 'B', 'C'];
          a.name = 'Hello';
          for (var x of a) {
            console.log(x); // 'A', 'B', 'C'
          }
       这就是为什么要引入新的for ... of循环。

    参考自廖雪峰老师的官方网站

  • 相关阅读:
    zbb20181207 springboot @ConfigurationProperties使用
    zbb20181206 logback,lombok 默认日志logback配置解析
    Spring Boot (8) 全局异常处理
    Spring Boot (7) JdbcTemplate访问数据库
    Spring Boot (6) Spring Data JPA
    Spring Boot (4) 静态页面和Thymeleaf模板
    Spring Boot (3) 热部署devtools
    Spring Boot (2) Restful风格接口
    Spring Boot (1) 构建第一个Spring Boot工程
    idea使用maven搭建ssm框架实现登陆商品增删改查
  • 原文地址:https://www.cnblogs.com/lst-315/p/11425897.html
Copyright © 2011-2022 走看看