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循環。
參考自廖雪峯老師的官方網站