概覽
ES6 提供了新的數(shù)據(jù)結(jié)構 Set。它類似于數(shù)組,但是成員的值都是唯一的。
內(nèi)容
1.構造函數(shù)
Set 本身是一個構造函數(shù),可以接受一個數(shù)組(或者具有 iterable 接口的其他數(shù)據(jù)結(jié)構)作為參數(shù)岳悟,用來初始化。
var arr = [1,2,2,3,3,3];
var setObj = new Set(arr); // [1,2,3]
2.屬性
size:set實例的成員總數(shù)泼差。
3.操作方法(操作數(shù)據(jù))
1贵少、add;
2堆缘、clear滔灶;
3、delete;
4吼肥、has录平。
var arr = [1,2,2,3,3,3];
var setObj = new Set(arr); // {1,2,3}
setObj.add(4);
console.log(setObj); // {1,2,3,4}
console.log(setObj.has(4)); // true
// 語法:delete(vlaue),不是index
setObj.delete(4);
console.log(setObj); // {1,2,3}
setObj.clear();
console.log(setObj); // {}
3.遍歷方法
forEach:類似于數(shù)組麻车,沒有返回值。
setObj.forEach(function (curItem, index) {
console.log('Index is ' + index + ', square is ' + curItem * curItem);
})
利用擴展運算符斗这,將 set 轉(zhuǎn)為數(shù)組动猬,間接使用數(shù)組的ES5 方法:
var arr = [1,2,2,3,3,3];
var setObj = new Set(arr);
var mapSet = new Set([...setObj].map(function(item, index, array) {
return item * item;
}))
// {1,4,9}
var filterSet = new Set([...setObj].filter(function(item, index, array) {
return item % 2 === 1;
}))
// {1,3}