Skip to content

Latest commit

ย 

History

History
215 lines (180 loc) ยท 6.18 KB

ch37-ํ•ด์„ค.md

File metadata and controls

215 lines (180 loc) ยท 6.18 KB

Chapter37

๐Ÿ“Œ๋ฌธ์ œ1

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)

๐Ÿ“Œ๋ฌธ์ œ2

์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•ด์ฃผ์„ธ์š”.

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) : ์ดํ„ฐ๋Ÿฌ๋ธ”์ด๊ธฐ ๋–„๋ฌธ์—.

๐Ÿ“Œ๋ฌธ์ œ3

๋‹ค์Œ์˜ ์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•ด์ฃผ์„ธ์š”.

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๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋œ๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ4

๋‹ค์Œ์€ ๊ต์ง‘ํ•ฉ์„ ๋งŒ๋“œ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•œ ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค. ์ฃผ์„ ๋ถ€๋ถ„์— ๋“ค์–ด๊ฐˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

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 ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๐Ÿ“Œ๋ฌธ์ œ5

์ผ์น˜ ๋น„๊ต ์—ฐ์‚ฐ์ž===์„ ์‚ฌ์šฉํ•˜๋ฉด NaN๊ณผ NaN์„ ๋‹ค๋ฅด๋‹ค๊ณ  ํ‰๊ฐ€ํ•˜์ง€๋งŒ, Set ๊ฐ์ฒด์™€ Map ๊ฐ์ฒด์—์„œ๋Š” ๊ฐ™๋‹ค๊ณ  ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ +0๊ณผ -0๋„ ๋™์ผํ•œ ์ฐจ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฐจ์ด์ ์„ ๊ฐ–๋Š” ์ด์œ ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ •๋‹ต ๋ฐ ํ•ด์„ค

Set, Map์—์„œ ๊ฐ’ ๋˜๋Š” ํ‚ค๋ฅผ ๋น„๊ตํ•  ๋•Œ, `SameValueZero`๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋“ฑ๊ฐ€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ6

๋‹ค์Œ ๋ณด๊ธฐ์˜ true, false๋ฅผ ๊ฐ๊ฐ ์„ ํƒํ•˜์‹œ์˜ค.

(1) Set๊ณผ Map์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋Š” length ํ”„๋กœํผํ‹ฐ๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
(2) Map๊ฐ์ฒด๋Š” ์ผ๋ฐ˜ ๊ฐ์ฒด์™€ ๋‹ค๋ฅด๊ฒŒ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด์ž ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
(3) Map๊ฐ์ฒด์— ๋™์ผํ•œ ํ‚ค๊ฐ’์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  ๋ฎ์–ด์“ฐ์ง€ ์•Š๋Š”๋‹ค.

์ •๋‹ต ๋ฐ ํ•ด์„ค

(1) : false
Set๊ณผ Map์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋Š” size ํ”„๋กœํผํ‹ฐ๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
(2) : false
Map๊ฐ์ฒด๋Š” ์ผ๋ฐ˜ ๊ฐ์ฒด์™€ ๋‹ค๋ฅด๊ฒŒ ์ดํ„ฐ๋Ÿฌ๋ธ”์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์œ ์‚ฌ๋ฐฐ์—ด ๊ฐ์ฒด์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค.
(3) : false
Map๊ฐ์ฒด์— ๋™์ผํ•œ ํ‚ค๊ฐ’์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  ๋ฎ์–ด์“ด๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ7

์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜์„ธ์š”.

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 ๋ฉ”์„œ๋“œ๋Š” ์‚ญ์ œ ์„ฑ๊ณต ์—ฌ๋ถ€๋กœ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—ฐ์†์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ8

๋‹ค์Œ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜์„ธ์š”.

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 ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.