好吧 最近忙著跳槽面試 重新開始復習之前的知識點。7號那天聽了小爝大神的live,有提到要寫技術博客,所以這是個開始吧 希望自己堅持下去
今日內容:
for..in.. 循環
例子:
var arr = ["A","B","c"]
for(var i in arr){
alert(i);// 0,1,2
alert(arr[i]);//"A","B","C"
}
之前遇到這個循環是在一個node.js模塊里面解析鍵值對,我比較菜,沒發現問題在這兒 。
for in 循環遍歷i的位置,就是這個鍵值結構的“鍵” 不過后來有看到阮一峰大神的ES6入門 ,建議以for of 循環來遍歷,因為不論是for in 還是forEach 方法中途不可以跳出。
還有一點,可以使用 hasOwnProperty()方法過濾掉對象的繼承屬性,切記
map與set
JS以{}這個來表示對象,但是有個規定,鍵的位置必須是字符串,其實這個位置別的類型也可以(廖大語)。所以ES6為了解決這個問題,引入了map這個新型數據結構,查找速度大大增加。我把Map結構聯想成二維數組。
具體操作如下:
var m = new Map([["A",1],["B",2],["C",3]]);
m.get("A");//1 獲取鍵為"A"的值
m.has("A");//true;
m.delete("A");
m.has("A");//false
var m = new Map();//新建一個空Map;
m.set('James',23);//添加
//一個key對應一個值,所以多次對一個key復制,后邊的值會被沖掉
m.set('James',6);
m.get('James');//6 這里真的不是黑詹姆斯....
set與map 類似,是鍵集合。其實set更像是沒有重復的數組。
var s = new Set();//空set
var s = new Set([1,2,3,3,'3']);
s //Set{1,2,3,'3'}
//delete(key)
s.delete('3');//Set{1,2,3}
//add(key)
s.add(4);
//{1,2,3,4}
所以可以使用set來給數組去重
var items = new Set([1, 2, 3, 4, 5]);
var array = Array.from(items);//Array.from
方法可以將Set結構轉為數組。
////////////////////////////////////////////////////
function dedupe(array) {
return Array.from(new Set(array));
}dedupe([1, 1, 2, 3]) // [1, 2, 3]