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.對象ip

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

參考自廖雪峯老師的官方網站

相關文章
相關標籤/搜索