ES6的Set使用方法

ES2015的set是什么?


set是一个集合允许存储任何类型的唯一值,无论是原始值还是对象引用


set通过构造函数的方式生成,接收一个数组作为参数。


const numbersSet = new Set([1,2,3,4,5]);

const stringSet = new Set(['Jan', 'Rick', 'Raymon', 'Tim']);

const objectSet = new Set([{a: 1, b: 2}]);

const arraySet = new Set([['javascript', 'coffeescript'], ['css', 'sass']]);


通过add方法添加数据


const newSetObject = new Set();

newSetObject.add('Raymon');

newSetObject.add({a: 1, b: 2});

newSetObject.add(1).add(2).add(3).add(4).add(5)

// Result: Raymon, {a: 1, b: 2}, 1, 2, 3, 4, 5


has方法来检查是否存在某个值

const numbersSet = new Set([1,2,3,4,5]);

const stringSet = new Set(['Jan', 'Rick', 'Raymon', 'Tim']);

const objectSet = new Set([{a: 1, b: 2}]);

const arraySet = new Set([['javascript', 'coffeescript'], ['css', 'sass']]);

numberSet.has(4); // true

numberSet.has(6); // false

stringSet.has('Raymon'); // true

objectSet.has({a: 1, b: 2}); // false

arraySet.has('css'); // false


用delete方法删除数据

const numbersSetObject = new Set([1,2,3,4,5,6,7,8,9]);
numbersSetObject.has(2); // true
numbersSetObject.delete(2);
numbersSetObject.has(2); // false
console.log(numbersSetObject); // 1,3,4,5,6,7,8,9


使用clear方法删除所有数据


const numbersSetObject = new Set([1,2,3,4,5,6,7,8,9]);
numbersSetObject.has(2); // true
numbersSetObject.clear();
console.log([...numbersSetObject]); // []


size属性表示set集合中有多少个元素


newSetObject.size // 7


使用set可以数组去重


const uniqueArray = new Set([1,2,2,2,3,4,5,5,6,7,9,9,8]);
console.log('uniqueArray: ', uniqueArray)
// unique: 1, 2, 3, 4, 5, 6, 7, 9, 8


如果是引用数据类型比较的内存地址


const objectSet = new Set([{a: 1, b: 2}, {a: 1, b: 2}]);

console.log('objectSet: ', objectSet);

// objectSet: {a: 1, b: 2}, {a: 1, b: 2};


当两个对象引用同一个内存地址时才相同


const demoObject = {a: 1, b: 2};

const objectSet = new Set([demoObject, demoObject]);

console.log('objectSet: ', objectSet);

// objectSet: {a: 1, b: 2};


set可以使用forEach循环遍历


const objectSet = new Set([{a: 1, b: 2}, {a: 1, b: 2}]);

objectSet.forEach(object => {
   console.log('Object: ', object);

})

// Object: {a: 1, b: 2}

// Object: {a: 1, b: 2}


也可以使用for-of遍历


const objectSet = new Set([{a: 1, b: 2}, {a: 1, b: 2}]);

for (let [key, value] of objectSet.entries()) {
  console.log(key);

}

// {a: 1, b: 2}

// {a: 1, b: 2}

你可能感兴趣的:(ES6的Set使用方法)