最近讀了一些有關於ES6的文章,覺得真是一個超級大的進步,就是不知道相容性怎麼樣,鑒於我還在初學,先寫個小例子練手,順便時刻提醒自己要堅持學下去。未來的趨勢肯定是替代es5沒跑了。 var arr=[1,2,1,3,2,4,5,1,3]; var setArr=new Set(arr); var n
最近讀了一些有關於ES6的文章,覺得真是一個超級大的進步,就是不知道相容性怎麼樣,鑒於我還在初學,先寫個小例子練手,順便時刻提醒自己要堅持學下去。未來的趨勢肯定是替代es5沒跑了。
var arr=[1,2,1,3,2,4,5,1,3]; var setArr=new Set(arr); var newArr=[]; setArr.forEach(function(e){ newArr.push(e); }); console.log(newArr);
set是es6里新提出的一個集合的概念,類似於數組arr,同樣不只是數字類型,其他類型的數據如字元串等也是支持的,set有個和數組不同的特性就是重覆的元素加入集合中是無效的,因此一個數組,利用set.add來加入到這個集合中來就自動實現了去重的步驟。
以下是Set
支持的所有操作:
new Set
:創建一個新的、空的Set
。new Set(iterable)
:從任何可遍曆數據中提取元素,構造出一個新的集合。set.size
:獲取集合的大小,即其中元素的個數。set.has(value)
:判定集合中是否含有指定元素,返回一個布爾值。set.add(value)
:添加元素。如果與已有重覆,則不產生效果。set.delete(value)
:刪除元素。如果並不存在,則不產生效果。.add()
和.delete()
都會返回集合自身,所以我們可以用鏈式語法。set[Symbol.iterator]()
:返回一個新的遍歷整個集合的迭代器。一般這個方法不會被直接調用,因為實際上就是它使集合能夠被遍歷,也就是說,我們可以直接寫for (v of set) {...}
等等。set.forEach(f)
:直接用代碼來解釋好了,它就像是for (let value of set) { f(value, value, set); }
的簡寫,類似於數組的.forEach()
方法。set.clear()
:清空集合。set.keys()
、set.values()
和set.entries()
返回各種迭代器,它們是為了相容Map
而提供的