ํฌ์ŠคํŠธ

Flatten ํ•จ์ˆ˜ ๐Ÿ”ซ

Flatten ํ•จ์ˆ˜ ๐Ÿ”ซ

์‚ฌ๊ฑด

์ด๋ฒˆ ์ฃผ ๊ณผ์ œ ์ค‘ ํ•˜๋‚˜์˜€๋˜ flatten ํ•จ์ˆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ๋‹ค.

1
_.flatten(array)

๋ณต์žกํ•จ ์—†์ด ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์„ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š” ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋‹ค. ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๊ณผ์ •์€ ์•ˆ๊ทธ๋žฌ์ง€๋งŒ.
ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์„ค๋ช… ๋˜ํ•œ ๊ฐ„๋‹จํ•˜๋‹ค.
์•„๋ฌด๋ฆฌ array์˜ ์ค‘์ฒฉ๋ฐฐ์—ด์˜ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด๋„ single level๋กœ ํ‰ํƒ„ํ™” ์‹œ์ผœ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜๋‹ค.

ํ•˜๋‚˜์˜ ๋ ˆ๋ฒจ๋งŒ์„ ํ‰ํƒ„ํ™” ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ ์กฐ์ฐจ ๊ตฌํ˜„์ด ํž˜๋“ค๊ฒ ๋‹ค ์ƒ๊ฐํ–ˆ์ง€๋งŒ,
์–ผ๋งˆ๋‚˜ ๊นŠ๋“  ๋ชจ๋“  ์ค‘์ฒฉ ๋ฐฐ์—ด์„ ํ‰ํƒ„ํ™” ์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์€ ๋ง‰๋ง‰ํ–ˆ๋‹ค.

์˜์‚ฌ์ฝ”๋“œ

์œ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ์˜์‚ฌ ์ฝ”๋“œ๋ถ€ํ„ฐ ์ž‘์„ฑํ•ด๋ดค๋‹ค

  1. ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ๊ทธ ์ž์ฒด๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ธฐ ๋ณด๋‹ค๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
  2. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ฐฐ์—ด ๋‚ด ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœํšŒํ•œ๋‹ค.
  3. ์ˆœํšŒํ•˜๋Š” ์ค‘ ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ๋ฐฐ์—ด์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•œ๋‹ค.
  4. ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด ๋‹จ์ˆœํžˆ ํ•ด๋‹น ๊ฐ’์„ ์ƒˆ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.
  5. ๋ฐฐ์—ด์ด๋ผ๋ฉด ํ•ด๋‹น ๋ฐฐ์—ด ๋‚ด์˜ ๊ฐ’์—๋งŒ ์ ‘๊ทผํ•˜์—ฌ ์ƒˆ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ์ด 5๋‹จ๊ณ„์˜ ์˜์‚ฌ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์€ ํ•˜๋‚˜์˜ ๋ ˆ๋ฒจ๋งŒ์„ ํ‰ํƒ„ํ™” ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

์œ„์˜ ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์œ„ ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ์กฐ๊ธˆ ๋” ์ฝ”๋“œ์ ์œผ๋กœ ๊ตฌ์ฒดํ™” ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค.

  1. ์ƒˆ ๋ฐฐ์—ด์„ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด ํ• ๋‹นํ•˜๊ธฐ, let result = [ ]
  2. ๋ฐฐ์—ด์˜ ๊ธธ์ด ๊ตฌํ•˜๊ธฐ, for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด ๊ธธ์ด๊นŒ์ง€๋งŒ ๋ฐ˜๋ณตํ•˜๊ธฐ
  3. if๋ฌธ์— ์˜ํ•ด n๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๊ฐ’์ด ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด result์— push()ํ•˜๊ธฐ
  4. n๋ฒˆ์งธ ๊ฐ’์ด ๋ฐฐ์—ด์ด๋ผ๋ฉด result์™€ n๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ๋ฐฐ์—ด๊ณผ concat()์œผ๋กœ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ

์œ„ ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž.
์—ฌ๋Ÿฌ ๊ณ ๋ฏผ๊ณผ ์šฐ์—ฌ๊ณก์ ˆ์ด ์žˆ์—ˆ์ง€๋งŒ ๊ตฌํ˜„์— ์ฒซ ์„ฑ๊ณตํ–ˆ๋˜ ์ฝ”๋“œ๋Š” ์ด๋ ‡๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
function flatten(array) {
  let result = [];
  
  for (let i = 0; i < array.length; i++) {
    if (Array.isArray(array[i]) === false) {
      result.push(array[i]);
    }
    else if (Array.isArray(array[i])) {
      result = result.concat(array[i]);
    }
  }
  return result;
}

์œ„๋ฅผ ์•„๋ž˜ ๋ฐฐ์—ด๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด,

1
2
3
4
5
6
const nestedArray = [
      1,
      [2],
      [3, [[[4]]]],
      [[5], [6], [7, 8, 9, [10], [[11]], 12, 13, [14], 15]],
    ];
1
2
// ๊ฒฐ๊ณผ๊ฐ’
[1, 2, 3, [[[4]]], [5], [6], [7, 8, 9, [10], [[11]], 12, 13, [14], 15]]

์œ„ ์ฒ˜๋Ÿผ ํ•œ์ธต์˜ ์ค‘์ฒฉ๋ฐฐ์—ด์ด ํ‰ํƒ„ํ™”๋œ ๋ฐฐ์—ด์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ถ„์„

์œ„ ์ฝ”๋“œ๋ฅผ ๋ฒ ์ด์Šค๋กœ ๋ณธ๋ž˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
๋ฐฐ์—ด ๊นŠ์ด์˜ ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š๊ณ  ์˜ˆ์ œ๋ณ„๋กœ ๋‹ค ๋‹ค๋ฅผํ…๋ฐ ์–ด๋–ป๊ฒŒ ๋ฒ”์œ„๋ฅผ ์ •ํ•ด์•ผํ• ๊นŒ?
ํ•ด๋‹ต์€ ๋  ๋•Œ๊นŒ์ง€๋งŒ ๋ฐ˜๋ณตํ•˜๊ธฐ๋‹ค.
๋ง์ด ์‰ฝ์ง€, ์œ„ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋ ๊นŒ?
์ง„์งœ ํ•ด๋‹ต์€ ๋ฆฌ์„œ์น˜ ๊ณผ์ œ ๋ชฉ๋ก์— ์žˆ์—ˆ๋‹ค.
๊ทธ๊ฒƒ์€ ์žฌ๊ท€ํ•จ์ˆ˜์˜€๋‹ค.

์žฌ๊ท€ ํ•จ์ˆ˜ ๊ตฌํ˜„ ์‹œ ์ฃผ์˜์‚ฌํ•ญ, ์‹คํ–‰ ํ๋ฆ„

์žฌ๊ท€ํ•จ์ˆ˜์˜ ์›๋ฆฌ๋Š” ์ด๋Ÿฌํ–ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
function recursive(num) {
  if (num <= 0) {
    return console.log('ํƒˆ์ถœ ์กฐ๊ฑด์— ๊ฑธ๋ ค ์žฌ๊ท€ํ•จ์ˆ˜ ์ข…๋ฃŒ.');
  }
  console.log(num);
  num--;
  recursive(num);
}
recursive(5);

๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋ณธ์ธ์„ ํ˜ธ์ถœํ•˜๋˜ ์˜๋„ํ•œ ๋ฐ”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ข…๋ฃŒ๋˜๊ฒŒ๋” ์กฐ๊ฑด๋ฌธ์„ ๊ฑฐ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

๋ฐœ์ „

์œ„ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋‚ด ์˜์‚ฌ์ฝ”๋“œ์— ์ ์šฉ์‹œํ‚ค๋ฉด ์–ด๋–จ๊นŒ?
๋จผ์ € ์˜์‚ฌ์ฝ”๋“œ๋ฅผ ์จ๋ณด์ž.
๋ผˆ๋Œ€๋Š” ๊ธฐ์กด์˜ ๋ฐฐ์—ด ํ•œ ์ธต ํ‰ํƒ„ํ™” ์ฝ”๋“œ์™€ ๊ฐ™์•˜๋‹ค.

  1. ์ƒˆ ๋ฐฐ์—ด result ๋งŒ๋“ค๊ธฐ
  2. ๋ฐฐ์—ด์˜ ๊ธธ์ด๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ˆœํšŒํ•˜๊ธฐ
  3. ๋งŒ์•ฝ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ๋ฉด push()๋กœ result์— ๋‹จ์ˆœ ์ถ”๊ฐ€ํ•˜๊ธฐ
  4. ๋ฐฐ์—ด์ด๋ผ๋ฉด ํ•ด๋‹น ๋ฐฐ์—ด๊ณผ result ์™€ concat()์œผ๋กœ ํ•ฉ์น˜๊ธฐ
  5. ๋ฐฐ์—ด ๊ธธ์ด๊นŒ์ง€ ๋„๋‹ฌํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ์ด ๋ฉˆ์ถ”๋ฉด ํ•œ์ธต ํ‰ํƒ„ํ™”๋œ result ๋ฐฐ์—ด ์™„์„ฑ
  6. result ๋ฐฐ์—ด์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ˆœํšŒํ•˜๊ธฐ
  7. ๋ฐฐ์—ด ๋‚ด ๋ฐฐ์—ด์ด ์žˆ๋‹ค๋ฉด result ๋ฐฐ์—ด์„ flatten ํ•จ์ˆ˜์— ๋„ฃ์–ด ์žฌ๊ท€ํ˜ธ์ถœ ํ•˜๊ธฐ

์—ฌ๋Ÿฌ ์‹ค์ˆ˜์™€ ์—๋Ÿฌ๋“ค์„ ๊ฑธ์ณ ์–ป์–ด๋‚ธ ๊ฒฐ๊ณผ๋Š” ์ด๊ฑฐ์˜€๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
_.flatten = function unpack(nestedArray) {
  let result = [];
  for (let i = 0; i < nestedArray.length; i++) {
    if (Array.isArray(nestedArray[i]) === false) {
      result.push(nestedArray[i]);
    }
    else if (Array.isArray(nestedArray[i])) {
      result = result.concat(nestedArray[i]);
    }
  }
  for (let j in result) {
    if (Array.isArray(result[j]))
    unpack(result);
  }
    return result;
};

์œ„ ์ฝ”๋“œ๋กœ์จ ์™„๋ฒฝํžˆ flatten์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ..
์œผ๋ฉด ์ข‹์•˜๊ฒ ์ง€๋งŒ ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ์˜๋„ํ–ˆ๋˜ ๊ฒฐ๊ณผ์— ์กฐ๊ธˆ ๋น—๋‚˜๊ฐ„ ์ •๋„๋„ ์•„๋‹ˆ์—ˆ๋‹ค.

๋ฌธ์ œ ์ง๋ฉด

๊ฒฐ๊ณผ๋Š” ์ด๋Ÿฌํ–ˆ๋‹ค.

์šฐ์ธก์˜ result์—์„œ ๋ณด์ด๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์— ์˜ํ•ด ๋ฐ˜๋ณต๋˜๋ฉฐ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด์ด ์žˆ์œผ๋ฉด result ์™€ ๊ทธ ๋ฐฐ์—ด์„ ๋‹ค์‹œ๊ธˆ ํ•ฉ์ณ์ฃผ๋ฉฐ ํ‰ํƒ„ํ™”๋ฅผ ์ง„ํ–‰๋˜์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋งˆ์นจ๋‚ด ๋ชจ๋“  ์ค‘์ฒฉ๋ฐฐ์—ด์ด ์‚ฌ๋ผ์ง„ ํ˜•ํƒœ๋กœ ๋‹จ์ผ ๋ ˆ๋ฒจ์˜ ๋ฐฐ์—ด์ด result ์ด ๋‹ด๊ธฐ๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒ result๋Š” ๋ฐ˜ํ™˜๋ฌธ์„ ๋งŒ๋‚˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป๋œ๊ฑด์ง€ result ๋ฐฐ์—ด์€ ๋‹ค์‹œ ์—ฌ๋Ÿฌ ์ค‘์ฒฉ๋ฐฐ์—ด์„ ๊ฐ€์ง„ ์ฑ„ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค..
๊ทธ๋ ‡๊ฒŒ ์—‰๋ง์ง„์ฐฝ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋ณต๋˜๋‹ค๊ฐ€ ์—ฌ๋Ÿฌ ์ค‘์ฒฉ๋ฐฐ์—ด์„ ๊ฐ€์ง„ ์ฑ„๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค.

์งˆ๋ฌธ

์งˆ๋ฌธ์˜ ๋‚ด์šฉ์€ ๊ฐ„๋‹จํ–ˆ๋‹ค.
ํ•ด๋‹น ์ฝ”๋“œ๋กœ ๋””๋ฒ„๊น…์„ ์ˆ˜์ฐจ๋ก€ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ํฌ์ธํŠธ๋ฅผ ์ฐพ์•„ ๋‚˜์„ฐ์ง€๋งŒ
๋ช…ํ™•ํ•˜๊ฒŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์ž˜๋ชป ๋˜์—ˆ๋Š”๊ฐ€๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋˜ ๋‚˜๋Š” ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋ฉ˜ํ†  ๋ถ„๊ป˜
์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ์—ฐํ•˜๋ฉฐ ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ์ž˜๋ชป๋๋Š”์ง€๋ฅผ ์—ฌ์ญค๋ณด์•˜๋‹ค.
๋ฉ˜ํ†  ๋ถ„์˜ ๋‹ต์€ ์ด๋Ÿฌํ–ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
_.flatten = function unpack(nestedArray) {
  let result = [];
  for (let i = 0; i < nestedArray.length; i++) {
    if (Array.isArray(nestedArray[i]) === false) {
      result.push(nestedArray[i]);
    }
    else if (Array.isArray(nestedArray[i])) {
      result = result.concat(nestedArray[i]);
    }
  }
  for (let j in result) {
    if (Array.isArray(result[j]))
    unpack(result);
  }
    return result;
};

์œ„ ํ•˜์ด๋ผ์ดํŠธ ๋œ ์˜์—ญ ์œ„์˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋งˆ์น˜๊ณ  ํ•œ๋ฒˆ์˜ ํ‰ํƒ„ํ™”๋ฅผ ๊ฑฐ์นœ ๋ฐฐ์—ด์„ ํ•˜์ด๋ผ์ดํŠธ ๋œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋‚˜๋ฉด์„œ
๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ณผ์ •์€ ์ด๋ ‡๋‹ค.

  1. ํ•œ์ธต ํ‰ํƒ„ํ™”๋œ ๋ฐฐ์—ด์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ˆ๋‹ค.
  2. j๋ฒˆ ์งธ์˜ ๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ์ง„ํ–‰ํ•œ๋‹ค.
  3. ๋ฐฐ์—ด์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์žฌ๊ท€ํ•œ๋‹ค.
  4. ๋ฐ˜๋ณต๋ฌธ์€ j๋ฒˆ์งธ๊นŒ์ง€ ์ง„ํ–‰ํ•˜๊ณ  ์ผ์‹œ ์ •์ง€๋œ๋‹ค.
  5. ์žฌ๊ท€๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ํ•œ์ธต ๋” ํ‰ํƒ„ํ™”๋œ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
  6. ํ•ด๋‹น ๋ฐฐ์—ด๋กœ ๋ฐ‘์˜ ํ•˜์ด๋ผ์ดํŠธ ๋ฐ˜๋ณต๋ฌธ์„ ๋งŒ๋‚˜ 0๋ฒˆ์งธ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์—ด์ธ๊ฐ€ ์•„๋‹Œ๊ฐ€๋ฅผ ํ™•์ธํ•œ๋‹ค.
  7. ๋˜ ๋‹ค๋ฅธ j ๋ฒˆ์งธ์—์„œ ๋ฐฐ์—ด์„ ๋งŒ๋‚œ๋‹ค.
  8. ์œ„ 3 - 7๋ฒˆ์ด ๋ฐ˜๋ณต๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ์œ„ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ๋งค๋ฒˆ ๋ฐ˜๋ณต๋ฌธ์„ ๋งŒ๋‚  ๋•Œ๋งˆ๋‹ค ์ผ์‹œ ์ •์ง€๊ฐ€ ๋˜์–ด ๋งˆ์ € ์ง„ํ–‰๋˜์ง€ ์•Š์•˜๋˜ ๋ฐ˜๋ณต๋ฌธ์ด ํ•œ๋ฒˆ ์™„์ „ํžˆ ํ‰ํƒ„ํ™”๋ฅผ ๊ฑฐ์น˜๊ณ  ๋‚˜์„œ์•ผ ๋‹ค์‹œ ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
์ด๋Š” ์ฝœ์Šคํƒ์—์„œ ์ง„ํ–‰๋˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ํ˜ธ์ถœ๋ฌธ์„ ๋งŒ๋‚˜ ํ˜ธ์ถœ๋ฌธ์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Œ“์ด๊ณ  ๋˜ ์Œ“์ด๋ฉฐ FILO๊ฐ€ ๋˜์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

๋ฉ˜ํ†  ๋ถ„๊ป˜์„  ์žฌ๊ท€ํ•จ์ˆ˜์˜ ์ดํ•ด๋„๋ฅผ ์กฐ๊ธˆ ๋” ๋†’ํžˆ๋Š”๊ฒŒ ํ•ด๋‹น ์ฝ”๋“œ์˜ ๊ตฌํ˜„์— ๋„์›€์ด ๋ ๊ฑฐ๋ผ๊ณ  ํ•˜์…จ๋‹ค.
์•„๋ž˜๊ฐ€ ์žฌ๊ท€ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋งํฌ

์žฌ๊ท€ํ•จ์ˆ˜ 3๋‹จ๊ณ„ ์ž‘์„ฑ๋ฒ•

ํ”ผ๋“œ๋ฐฑ ์ •๋ฆฌ

์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๋‚˜์„œ
๋จผ์ € ๋“  ์ƒ๊ฐ์€ ์œ„ ํ•˜์ด๋ผ์ดํŠธ ๋œ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ํ•ด๋‹น ์ฝ”๋“œ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋Œ€์‹ ์— ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์จ์•ผ๋ ๊นŒ?
๋‹ต์€ ์ •๋ง ๊ฐ„๋‹จํ–ˆ๋‹ค.
์กฐ๊ฑด๋ฌธ ๋‚ด์— ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
๊ทธ ์™ธ์— ์ˆ˜์ •์‚ฌํ•ญ์œผ๋กœ๋Š” ๋จผ์ €
๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹๋ณด๋‹ค ๊ทธ ์ž์ฒด์˜ ์ˆœ์„œ๋ฅผ ์ˆœํšŒํ•˜๊ธฐ ์œ„ํ•ด forโ€ฆof ๋ฅผ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ—ท๊ฐˆ๋ฆผ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ์ผ ๋•Œ์˜ ์กฐ๊ฑด์„ if๋ฌธ์— ๋„ฃ๊ธฐ๋กœ ํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋Œ€์˜ ์กฐ๊ฑด์€ ๊ฐ„๋‹จํ•˜๊ฒŒ else๋งŒ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
_.flatten = function unpack(nestedArray) {
  let result = [];
  
  for (let item of nestedArray) {
    if (Array.isArray(item)) {
      result = result.concat(flatten(item));
    }
    else {
	    result.push(item)
    }
  }
    return result;
};

๋Œ€๋ง์˜ ๊ฒฐ๊ณผ

์œ„ ์ฝ”๋“œ๋กœ ์˜ˆ์ œ๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ณด์•˜๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-04-03 แ„‹แ…ฉแ„’แ…ฎ 10.26.36.png

๋“œ๋””์–ด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ์ธ ์‹น ๋‹ค ํ‰ํƒ„ํ™” ๋œ ๋ฐฐ์—ด์„ ๋งž์ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด ๊ธ€์€ ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์ธ๊ธฐ ํƒœ๊ทธ