Skip to content

Latest commit

ย 

History

History
189 lines (155 loc) ยท 5.34 KB

ch27-ํ•ด์„ค.md

File metadata and controls

189 lines (155 loc) ยท 5.34 KB

Chapter27

๐Ÿ“Œ๋ฌธ์ œ1

๋‹ค์Œ ๋ฌธ์žฅ์„ ๋ณด๊ณ  true, false๋ฅผ ํŒ๋‹จํ•˜์„ธ์š”.

(1) : JS์—์„œ ๋ฐฐ์—ด ํƒ€์ž…์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
(2) : ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์€ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋ฉด ์ž๋™ ๊ฐฑ์‹ ๋œ๋‹ค.
(3) : push, pop, unshift, shift, concat, splice ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•œ๋‹ค.
(4) : find, filter ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋‹ต์•ˆ ์ž‘์„ฑ

(1) : true
(2) : true
(3) : false - concat์€ ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
(4) : false - find ๋ฉ”์„œ๋“œ๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๊ต์žฌ 549p)

๐Ÿ“Œ๋ฌธ์ œ2

๋‹ค์Œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์˜€์„ ๋•Œ, ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

function func() {
  const arr = [1, 2, 3, 4, 5];

  arr.forEach((item) => {
    if(item === 2) return ;
    console.log(item);
  })
}

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

์ถœ๋ ฅ ๊ฒฐ๊ณผ : 1 3 4 5

๊ต์žฌ์—์„œ forEach๋ฌธ์˜ ๋‚ด์—์„œ ์ˆœํšŒ๋ฅผ ์ œ์–ดํ•˜๊ธฐ์œ„ํ•ด `break`, `continue`๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ return๋ฌธ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์ง€๋งŒ, ์ˆœํšŒ๋ฅผ ๋ฉˆ์ถ”์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ ์ด์œ ๋Š” forEach๊ฐ€ ๋งค๋ฒˆ ์ฝœ๋ฐฑํ•จ์ˆ˜ ์‹คํ–‰์„ ํ†ตํ•ด ์ˆœํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ฐ ์ˆœํšŒ์˜ ์‹คํ–‰์€ ํ•จ์ˆ˜์˜ ์‹คํ–‰์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ํ•จ์ˆ˜ ๋‚ด `return`์€ ํ•จ์ˆ˜ ์ข…๋ฃŒ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ MDN์—์„œ ์ˆœํšŒ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” for, for...of, for...in ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฐ˜๋ณต๋ฌธ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ3

true or false๋ฅผ ๊ณ ๋ฅด์„ธ์š”

1) Array.prototype.splice๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€ํ™˜์‹œํ‚ค๊ณ , Array.prototype.slice๋Š” ๋ณ€ํ™˜์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. 
2) new Array(a)๋Š” Array(a)์™€ ๋™์ž‘ ๋ฐฉ์‹์ด ๊ฐ™๋‹ค. 
3) [1, 2, 3, 4, 100, 5].sort() === [1, 2, 3, 4, 5, 100] ์ด๋‹ค. 
4) array์˜ sort ๋ฉ”์„œ๋“œ๋Š” quicksort๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 
5) forEach๋Š” for์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

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

1) true
2) true
Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋”๋ผ๋„, ์ฆ‰ ์ผ๋ฐ˜ํ•จ์ˆ˜๋กœ์„œ ํ˜ธ์ถœํ•ด๋„ Array ์ƒ์„ฑ์ž ๋‚ด๋ถ€์—์„œ new.target์„ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— array๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. 
3) false
js์˜ sortํ•จ์ˆ˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์—, ์š”์†Œ๋“ค์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ณ  ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค ๋‹ค์‹œ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์„ ํ†ตํ•ด ์ •๋ ฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋ณ„๋„์˜ ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.
4) false
์ด์ „์—๋Š” quicksort๋ฅผ ์ด์šฉํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ๊ฐ’์˜ ์š”์†Œ๊ฐ€ ์ค‘๋ณต๋˜์–ด ์žˆ์„ ๋•Œ ์ดˆ๊ธฐ ์ˆœ์„œ์™€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๋ถˆ์•ˆ์ •์„ฑ ๋•Œ๋ฌธ์— ํ˜„์žฌ๋Š” timesort๋ฅผ ์ด์šฉํ•œ๋‹ค.
5) false
์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€์ง€๋งŒ ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค. for์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ถ”๊ตฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋งž์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ for ๋Œ€์‹  forEach๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. 

๐Ÿ“Œ๋ฌธ์ œ4

๋‹ค์Œ์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค.

console.log(Array('hello')); // (1)
console.log(Array.from('hello')); // (2)

const arrayLike = { 
    '0' : 'a',
    '1' : 'b',
    '2' : 'c',
    length : 4
}

console.log(Array.from(arrayLike)); // (3)

const arrayUnlike = {
    '0' : 'a',
    '1' : 'b',
    '2' : 'c', 
}
console.log(Array.from(arrayUnlike)); //(4)

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

(1) ['hello']
Array๋Š” ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด ๋ฌธ์ž์—ด์„ ํฌํ•จํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
(2) [ 'h', 'e', 'l', 'l', 'o' ]
Array.from์€ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค.
(3) [ 'a', 'b', 'c', undefined ]
(4) []
length๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์•„์„œ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š”๋‹ค. 

๐Ÿ“Œ๋ฌธ์ œ5

๋‹ค์Œ์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค.

  const arr = [1, 2, 3];
      const arr1 = [0, ...arr];
      const arr2 = [...arr, 4];
      console.log(arr); // 1

      const arr4 = [1, 2, 3];
      arr4.push(4);
      arr4.unshift(0);
      console.log(arr4); // 2

๋‹ต์•ˆ ์ž‘์„ฑ

(1) : [1,2,3] // spread๋ฌธ๋ฒ•์€ ์›๋ณธ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•˜์ง€์•Š๊ณ  ์–•์€๋ณต์‚ฌ๋ฅผํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
(2) : [0,1,2,3,4] // push,unshift๋Š” ์›๋ณธ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•œ๋‹ค.

๐Ÿ“Œ๋ฌธ์ œ6

๋‹ค์Œ์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ์‹œ์˜ค.

  const arr = [NaN, 1, 2, 3, 4];
      console.log(arr.includes(NaN)); // 1
      console.log(arr.indexOf(NaN)); // 2 

๋‹ต์•ˆ ์ž‘์„ฑ

(1) : true // inclues๋Š” NaN์ด ๋ฐฐ์—ด์— ํฌํ•จ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ.
(2) : -1 // indexOf๋Š” ๋ถˆ๊ฐ€.

๐Ÿ“Œ๋ฌธ์ œ7

๋‹ค์Œ์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋กœ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ˆซ์ž๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

   <div id="app">
      <div class="box">1</div>
      <div class="box">2</div>
      <div class="box">3</div>
      <div class="box">4</div>
      <div class="box">5</div>
      <div class="box">6</div>
    </div>
    <script>
      const $boxes = document.querySelectorAll(".box");
      const $newBoxes = $boxes.filter((box) => box.innerText % 2 === 0);
      const $app = document.querySelector("#app");
      $app.innerHTML = "";
      $newBoxes.forEach((box) => $app.appendChild(box));
    </script>

๋‹ต์•ˆ ์ž‘์„ฑ

1
2
3
4
5
6
$boxes.filter is not a function 
-> NodeList๋Š” ์œ ์‚ฌ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ๋ฉ”์„œ๋“œ์ธ filter๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.