정보실

웹학교

정보실

javascript JavaScript Sets 소개

본문

Sets는 고유 한 값의 모음을 만들 수 있는 ES6에 포함 된 새로운 객체 유형입니다. Sets의 값은 문자열 및 정수와 같은 간단한 기본 요소이거나 객체 리터럴 또는 배열과 같은 더 복잡한 객체 유형일 수 있습니다. 반복되는 요소가 없는 배열로 Sets을 생각하십시오.


고유한 배열로 변환하려는 많은 요소를 포함하는 배열이 있는 경우가 많이 있습니다. 배열에 대한 무차별 대입, 요소 검사, 루프, 고유 한 콜백 메소드 등을 사용하여 수행 할 수 있지만 가장 좋은 방법은 set()을 사용하는 것입니다.


https://medium.com/better-programming/an-introduction-to-sets-in-javascript-5bebaace3135 


문법:


new Set([iterable]); 


먼저 예를 봅시다 :


let arrayOne=['1','2','1','2']
console.log(arrayOne)
// ['1','2','1','2']
let setOne= new Set(arrayOne)
for(elem of setOne){
console.log(elem)
}
//'1'
//'2'
// Another way of doing
let setTwo= [...new Set(arrayOne)]
console.log(setTwo)
// ["1" ,"2"]


예제에서 배열에서 새 세트를 만들고 스프레드 연산자를 사용하여 세트를 배열로 만들 수 있음이 분명합니다.


Set Methods 


이제 몇 가지 기본 설정 방법을 살펴 보겠습니다. 필요하지는 않지만 코드를 최적화 하기 위해 잘 알고 있는 것이 가장 좋습니다.

  • add
  • size
  • has
  • forEach
  • delete
  • clear
let fruits = new Set();
fruits.add('apple');
fruits.add('banana');
fruits.add('kiwi');
fruits.add('orange');
console.log(fruits.size); // 4
fruits.add('orange');
console.log(fruits.size); // 4
console.log(fruits.has('apple')); // true
fruits.delete('apple');
console.log(fruits.has('apple')); // false
fruits.forEach(fruit => {
console.log(`I love eating ${fruit}!`);
});
// 'I love eating banana!'
// 'I love eating kiwi!'
// 'I love eating orange!'
fruits.clear();
console.log(fruits.size); // 0


add 메소드는 요소를 추가하고 delete 메소드는 요소를 삭제하며 has 메소드는 배열에 포함 된 것과 동일한 기능을 가지며 clear 메소드는 세트를 비 웁니다.


구문에서 보았 듯이 set 메소드는 iterable을 인수로 사용하므로 문자열을 인수로 사용할 수도 있습니다.


console.log('I will only contain unique or distinct letter'.length); // 45
let sentence = new Set('I will only contain unique or distinct letter');
console.log( sentence.size); // 17
for(letter of sentence){
console.log(letter)
}
// 'I'
// ' '
// 'w'
// 'i'
// 'l'
// 'o'
// 'n'
// 'y'
// 'c'
// 't'
// 'a'
// 'u'
// 'q'
// 'e'
// 'r'
// 'd'
// 's'


이제 set 메소드의 실제 예를 살펴 보겠습니다.


function union(setA, setB) {
var _union = new Set(setA);
for (var elem of setB) {
_union.add(elem);
}
return _union;
}
function intersection(setA, setB) {
var _intersection = new Set();
for (var elem of setB) {
if (setA.has(elem)) {
_intersection.add(elem);
}
}
return _intersection;
}
function difference(setA, setB) {
var _difference = new Set(setA);
for (var elem of setB) {
_difference.delete(elem);
}
return _difference;
}
//Examples
var setA = new Set([1, 2, 3, 4]);
var setB = new Set([2, 3]);
var setC = new Set([3, 4, 5, 6]);
union(setA, setC); // => Set [1, 2, 3, 4, 5, 6]
intersection(setA, setC); // => Set [3, 4]
difference(setA, setC); // => Set [1, 2]


결론 


결국 데이터 세트에서 고유하거나 고유 한 요소를 처리 할 때 세트를 사용해야 한다는 결론을 내고 싶습니다. 배열은 거의 모든 질문을 처리하기에 충분한 메소드와 함수를 가지고 있기 때문에 가장 우선적으로 선택해야 합니다.






  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

페이지 정보

조회 23회 ]  작성일19-08-20 17:56

웹학교