true
,false
๋ฅผ ํ๋จํด์ฃผ์ธ์.
1. Set์์ฑ์ ํจ์๋ ์ดํฐ๋ฌ๋ธ์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ Set๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค. ์ด๋ ์ดํฐ๋ฌ๋ธ์ ์ค๋ณต๋ ๊ฐ์ ํฌํจ์ํค์ง ์๋๋ค.
2. Set.prototype.add๋ ๋ฐํ๊ฐ์ผ๋ก true,false๊ฐ์ ๋ฐํํ๊ณ , Set.prototype.delete๋ ๋ฐํ๊ฐ์ผ๋ก ์ญ์ ๋ Set๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
(1) : true
(2) : false -> ๋ฐ๋๋ค. add๋ฉ์๋๊ฐ ์ถ๊ฐ๋ Set๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ , delete๋ ๋ฐํ๊ฐ์ผ๋ก true,false๊ฐ์ ๋ฐํํ๋ค.
๋ฐ๋ผ์ add๋ ์ฐ์ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
ex) const set = new Set();
set.add(1).add(2).add(3)
์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์์ธกํด์ฃผ์ธ์.
const map = new Map ( [
[ 1 , 2 ] ,
[ { a : 1 } , 123 ] ,
] ) ;
const keys = map . keys ( ) ;
const values = map . values ( ) ;
const entries = map . entries ( ) ;
// 1.
console . log ( keys . next ( ) ) ;
console . log ( keys . next ( ) ) ;
console . log ( keys . next ( ) ) ;
// 2.
console . log ( values . next ( ) ) ;
console . log ( values . next ( ) ) ;
console . log ( values . next ( ) ) ;
// 3.
console . log ( entries . next ( ) ) ;
console . log ( entries . next ( ) ) ;
console . log ( entries . next ( ) ) ;
// 4.
console . log ( Symbol . iterator in keys ) ;
console . log ( Symbol . iterator in values ) ;
console . log ( Symbol . iterator in entries ) ;
(1) : ์์ํค๋ฅผ ๊ฐ์ผ๋ก ๊ฐ๋ ์ดํฐ๋ฌ๋ธ ์ด๋ฉด์ ์ดํฐ๋ ์ดํฐ์ธ ๊ฐ์ฒด
{value : 1,done :false}
{value : {a:1},done : false}
{value : undefined, done : true}
(2) : ์์๊ฐ๋ฅผ ๊ฐ์ผ๋ก ๊ฐ๋ ์ดํฐ๋ฌ๋ธ ์ด๋ฉด์ ์ดํฐ๋ ์ดํฐ์ธ ๊ฐ์ฒด
{value : 2, done : false}
{value : 123, done :false}
{value : undefined, done : true}
(3) : ์์ํค์ ์์๊ฐ์ ๊ฐ์ผ๋ก ๊ฐ๋ ์ดํฐ๋ฌ๋ธ ์ด๋ฉด์ ์ดํฐ๋ ์ดํฐ
{value : [1,2], done : false}
{value : [{a:1},123], done : false}
{value : undefined, done : true}
(4) : ์ดํฐ๋ฌ๋ธ์ด๊ธฐ ๋๋ฌธ์.
๋ค์์ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์์ธกํด์ฃผ์ธ์.
const set = new Set ( [ { a : 1 } , { a : 1 } ] ) ;
console . log ( set ) ; // (1)
const map = new Map ( [ [ { a : 1 } , 1 ] , [ { a : 1 } , 1 ] ] )
map . delete ( [ { a : 1 } , 1 ] ) ;
console . log ( map ) ; // (2)
(1) Set(2)ย {{a : 1}, {a : 1}};
(2) Map(2)ย {{a : 1} => 1, {a : 1} => 1}
๊ฐ์ฒด๋ ์ฃผ์๊ฐ์ผ๋ก ๋น๊ต๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ๊ฐ์๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ํ๋จ, ๋ฐ๋ผ์ ์ค๋ณต ์ ๊ฑฐ ๋์ง ์๊ณ ๊ฐ์ด ๊ฐ์๋ key๊ฐ์ด ๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๋จ๋๋ค.
๋ค์์ ๊ต์งํฉ์ ๋ง๋๋ ํ๋กํ ํ์
๋ฉ์๋๋ฅผ ์ ์ํ ์ฝ๋ ์
๋๋ค. ์ฃผ์ ๋ถ๋ถ์ ๋ค์ด๊ฐ ์ฝ๋๋ฅผ ์์ฑํด์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
Set . prototype . intersection = function ( set ) {
const result = new Set ( ) ;
for ( const value of set ) {
// ์ฝ๋ ์์ฑ
}
return result ;
}
const setA = new Set ( [ 1 , 2 , 3 , 4 ] ) ;
const setB = new Set ( [ 1 , 2 ] ) ;
console . log ( setA . intersection ( setB ) ) ;
Set . prototype . intersection = function ( set ) {
const result = new Set ( ) ;
for ( const value of set ) {
if ( this . has ( value ) ) result . add ( value ) ;
}
return result ;
}
const setA = new Set ( [ 1 , 2 , 3 , 4 ] ) ;
const setB = new Set ( [ 1 , 2 ] ) ;
console . log ( setA . intersection ( setB ) ) ;
// has ๋ฉ์๋์ add ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ๊ตฌํํ ์ ์๋ค.
์ผ์น ๋น๊ต ์ฐ์ฐ์===
์ ์ฌ์ฉํ๋ฉด NaN
๊ณผ NaN
์ ๋ค๋ฅด๋ค๊ณ ํ๊ฐํ์ง๋ง, Set ๊ฐ์ฒด์ Map ๊ฐ์ฒด์์๋ ๊ฐ๋ค๊ณ ํ๊ฐํฉ๋๋ค. ๋ํ +0
๊ณผ -0
๋ ๋์ผํ ์ฐจ์ด์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ฐจ์ด์ ์ ๊ฐ๋ ์ด์ ๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑํ์์ค.
Set, Map์์ ๊ฐ ๋๋ ํค๋ฅผ ๋น๊ตํ ๋, `SameValueZero`๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฑ๊ฐ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
๋ค์ ๋ณด๊ธฐ์ true
, false
๋ฅผ ๊ฐ๊ฐ ์ ํํ์์ค.
(1) Set๊ณผ Map์ ์์ ๊ฐ์๋ length ํ๋กํผํฐ๋ก ์ ์ ์๋ค.
(2) Map๊ฐ์ฒด๋ ์ผ๋ฐ ๊ฐ์ฒด์ ๋ค๋ฅด๊ฒ ์ดํฐ๋ฌ๋ธ์ด์ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค.
(3) Map๊ฐ์ฒด์ ๋์ผํ ํค๊ฐ์ด ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋์ง ์๊ณ ๋ฎ์ด์ฐ์ง ์๋๋ค.
(1) : false
Set๊ณผ Map์ ์์ ๊ฐ์๋ size ํ๋กํผํฐ๋ก ์ ์ ์๋ค.
(2) : false
Map๊ฐ์ฒด๋ ์ผ๋ฐ ๊ฐ์ฒด์ ๋ค๋ฅด๊ฒ ์ดํฐ๋ฌ๋ธ์ ๊ฐ๋ฅํ์ง๋ง ์ ์ฌ๋ฐฐ์ด ๊ฐ์ฒด์ ํน์ง์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฏ๋ก ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค.
(3) : false
Map๊ฐ์ฒด์ ๋์ผํ ํค๊ฐ์ด ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋์ง ์๊ณ ๋ฎ์ด์ด๋ค.
์ฝ๋ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ์ธ์.
const set1 = new Set ( ) ;
console . log ( set1 ) ; // (1)
const set2 = new Set ( [ 1 , 1 , 2 , 3 ] ) ;
set2 . add ( 3 ) . add ( 4 ) ;
console . log ( set2 ) ; // (2)
set2 . delete ( 3 ) . delete ( 4 ) ;
console . log ( set2 ) ; //(3)
(1) : Set(0) {}
(2) : Set(3) {1, 2, 3, 4}
(3) : TypeError
(1) : Set ์์ฑ์ ํจ์์ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ๋น Set ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค.
(2) : ์ดํฐ๋ฌ๋ธ์ ์ค๋ณต๋ ๊ฐ์ Set ๊ฐ์ฒด์ ์์๋ก ์ ์ฅ๋์ง ์์ผ๋ฉฐ, ์ค๋ณต๋ ์์์ ์ถ๊ฐ๋ ํ์ฉ๋์ง ์์ต๋๋ค.
(3) : delete ๋ฉ์๋๋ ์ญ์ ์ฑ๊ณต ์ฌ๋ถ๋ก ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์, ์ฐ์์ ์ผ๋ก ํธ์ถํ ์ ์๋ค.
๋ค์ ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ์ธ์.
const lee = { name : "Lee" } ;
const kim = { name : "Kim" } ;
const map = new Map ( [
[ lee , "developer" ] ,
[ kim , "designer" ] ,
] ) ;
console . log ( map . get ( kim ) ) ; // (1)
console . log ( map . delete ( "park" ) ) ; // (2)
console . log ( map . clear ( ) ) ; // (3)
console . log ( map ) ; // (4)
(1) : designer
(2) : false
(3) : undefined
(4) : Map(0) {}
(1) : get ๋ฉ์๋์ ์ธ์๋ก ํค๋ฅผ ์ ๋ฌํ๋ฉด Map ๊ฐ์ฒด์์ ์ธ์๋ก ์ ๋ฌํ ํค๋ฅผ ๊ฐ๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
(2) : ์กด์ฌํ์ง ์๋ ํค๋ก Map ๊ฐ์ฒด์ ์์๋ฅผ ์ญ์ ํ๋ฉด ์๋ฌ ์์ด ๋ฌด์ํฉ๋๋ค.
(3) : clear ๋ฉ์๋๋ ์ธ์ ๋ undefined๋ฅผ ๋ฐํํฉ๋๋ค.
(4) : ์์๊ฐ ์ผ๊ด ์ญ์ ๋์ด ๋น Map ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.