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循环。

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

  • 相关阅读:
    Hackerrank--Savita And Friends(最小直径生成树MDST)
    Hackerrank--Kundu and Tree
    Hackerrank--String Function Calculation(后缀数组)
    Hackerrank--Ashton and String(后缀数组)
    Foundation 学习
    JS 严格模式
    判断移动设备横竖屏
    Nodejs解析HTML网页模块 jsdom
    百度Map调用
    Jade 报错
  • 原文地址:https://www.cnblogs.com/lst-315/p/11425897.html
Copyright © 2011-2022 走看看