const obj = new Set([ 1, 2, "ABC" ]); console.log(`size: ${obj.size}`); for (let value of obj){ console.log(value); }; // size: 3 // 1 // 2 // ABC
Set 인스턴스 생성, 반환
size 프로퍼티
const obj = new Set([ 1, 2, 1, [], {} ]); console.log(`size: ${obj.size}`); for (let value of obj){ console.log(value); }; // size: 4 // 1 // 2 // [] // {}
const set = Set; const obj = new Set([ "one", "two" ]);
Set은 배열의 인덱스 순서 개념과 ,Map의 값 중복 시 나중의 것이 제외되는 key 개념을 가지고 있습니다.
배열처럼 사용하지만, 값이 중복되는 것을 허용하지 않습니다.
let obj = new Set(); obj.add("축구").add("농구"); obj.add("축구"); for (let value of obj) { console.log(value); }; // 축구 // 농구
함수를 생성 후 value로 사용
let obj = new Set(); obj.add(function sports(){ return 100; }); obj.add(function sports(){ return 200; }); for (let value of obj) { console.log(value()); }; // 100 // 200
value에 생성한 함수 이름 작성
const sports = () => { return 100; }; let obj = new Set(); obj.add(sports); obj.add(sports); for (let value of obj) { console.log(value()); }; // 100
Object를 value로 사용
const sports = { "축구": 11, "야구": 9 }; let obj = new Set(); obj.add(sports); for (let value of obj) { console.log(value); }; // {축구: 11, 야구: 9}
const sports = () => {}; const obj = new Set([ sports ]); console.log(obj.has(sports)); console.log(obj.has("book")); // true // false
Set 인스턴스로 이터레이터 오브젝트를 생성 및 반환합니다.
Set 인스턴스에 설정된 순서로 반환하며 next()로 [value, value]로 반환합니다.
const obj = new Set([ "one", () => {} ]); const iterObj = obj.entries(); console.log(iterObj.next()); console.log(iterObj.next()); console.log(iterObj.next()); // {value: ["one", "one"], done: false} // {value: [()⇒{}, ()⇒{}], done: false} // {value: undefined, done: true}
⇒ value만 작성했는데 [value, value]가 반환되는 것은 Map오브젝트와 같은 모듈을 사용하기에 형태를 맞추기 위한 것으로 [key, value]에서 value를 key로 반환합니다.
const obj = new Set([ "one", () => {} ]); const iterObj = obj.keys(); console.log(iterObj.next()); console.log(iterObj.next()); console.log(iterObj.next()); // {value: "one", done: false} // {value: ()⇒{}, done: false} // {value: undefined, done: true}
const obj = new Set([ "one", () => {} ]); const iterObj = obj.values(); console.log(iterObj.next()); console.log(iterObj.next()); console.log(iterObj.next()); // {value: "one", done: false} // {value: ()⇒{}, done: false} // {value: undefined, done: true}
const obj = new Set([ "one", () => {} ]); const iter = obj[Symbol.iterator](); console.log(iter.next()); console.log(iter.next()); console.log(iter.next()); // {value: "one", done: false} // {value: ()⇒{}, done: false} // {value: undefined, done: true}
Set 인스턴스를 반복하면서 콜백 함수를 호출합니다.
콜백 함수에 넘겨주는 파라미터
value, key(value), Set 인스턴스
const obj = new Set([ "one", () => {} ]); function callback(value, key, set){ console.log(value); }; obj.forEach(callback); // one // () => {}
콜백 함수에서 this 사용
const obj = new Set([ "one", "two" ]); function callback(value, key, set){ console.log(`${value}, ${this.check}`); }; obj.forEach(callback, {check: "ABC"}); // one, ABC // two, ABC
⇒ 콜백 함수에서 this가 forEach()의 두 번째 파라미터에 작성한 오브젝트를 참조하게 하려면 일반 함수로 작성해야 합니다.
const obj = new Set([ "one", "two" ]); console.log(obj.delete("one")); console.log(obj.delete("one")); // true // false
const obj = new Set([ "one", "two" ]); console.log(obj.size); obj.clear(); console.log(obj.size); obj.add("one"); console.log(obj.size); // 2 // 0 // 1