👋 Set과 이터레이터 오브젝트 - entries(), keys(), values(), Symbol.iterator()
1. entries()
-
Set인스턴스로 이터레이터 오브젝트 생성, 반환Set인스턴스에 설정된 순서로 반환next()로[value, value]반환
const obj = new Set(['one', () => {}]); const iterObj = obj.entries(); console.log(iterObj.next()); // {value: [one, one], done: false} console.log(iterObj.next()); // {value: [() => {}, () => {}], done: false} console.log(iterObj.next()); // {value: undefined, done: true}
2. keys()
-
value가key가 되므로keys()는 의미가 없음Map오브젝트와 맞추기 위한 것
-
Set인스턴스의value를 key로 사용하여 이터레이터 오브젝트 생성, 반환Set인스턴스에 설정된 순서로 반환
-
next()로value(key)반환const obj = new Set(['one', () => {}]); const iterObj = obj.keys(); console.log(iterObj.next()); // {value: one, done: false} console.log(iterObj.next()); // {value: () => {}, done: false} console.log(iterObj.next()); // {value: undefined, done: true}
3.values()
-
Set인스턴스의value로 이터레이터 오브젝트 생성, 반환Set인스턴스에 설정된 순서로 반환
-
next()로value반환const obj = new Set(['one', () => {}]); const iterObj = obj.values(); console.log(iterObj.next()); // {value: one, done: false} console.log(iterObj.next()); // {value: () => {}, done: false} console.log(iterObj.next()); // {value: undefined, done: true}
4. Symbol.iterator()
-
Set인스턴스로 이터레이터 오브제트 생성, 반환Set.prototype.values()와 같음next()로value반환
const obj = new Set(['one', () => {}]); const iterObj = obj[Symbol.iterator](); console.log(iterObj.next()); // {value: one, done: false} console.log(iterObj.next()); // {value: () => {}, done: false} console.log(iterObj.next()); // {value: undefined, done: true}