JavaScript

[JavaScript] ๋ฐฐ์—ด

๋ฒผ๋ฆฌ01 2024. 6. 19. 19:59

๐Ÿ“Œ๋ฐฐ์—ด(Array)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์—ด์€ ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ‰๋‚ด๋‚ธ ํŠน์ˆ˜ ๊ฐ์ฒด๋‹ค.

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”๋กœ ๊ตฌํ˜„๋œ ๊ฐ์ฒด๋กœ, ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ์ธ๋ฑ์Šค๋กœ ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์†๋„๊ฐ€ ๋А๋ฆฌ์ง€๋งŒ ํŠน์ • ์š”์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ ๋น ๋ฅธ ์†๋„๋ฅผ ๋ณด์ธ๋‹ค. 

 

 

๐Ÿ“Œํ™•์ธ

`isArray()`

์ „๋‹ฌ๋œ ์ธ์ž๊ฐ€ ๋ฐฐ์—ด์ด๋ฉด `true`๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

๐Ÿ“Œ์‚ฝ์ž…

`push()` 

๋ฐฐ์—ด์˜ ๋งจ ๋’ค์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์˜ ๊ธธ์ด `length` ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

`concat()`

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ’ ๋˜๋Š” ๋ฐฐ์—ด์„ ์›๋ณธ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅด ์ถ”๊ฐ€ํ•œ๋’ค ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

`unshift()`

๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์˜ ๊ธธ์ด `length` ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

const arr = [1, 2];

const newArr = [3, ...arr];

// newArr = [3, 1, 2]
// arr = [1, 2]

 

 

 

`fill()`

๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์œผ๋กœ ์ฑ„์šด๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

 

 

๐Ÿ“Œ๋ณ€๊ฒฝ

`splice` ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ์š”์†Œ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

๋‘๋ฒˆ์งธ ์ธ์ž, ์ฆ‰ ๊ฐœ์ˆ˜๊ฐ€ 0์ด๋ผ๋ฉด ์‚ญ์ œ ์—†์ด ์‚ฝ์ž…๋งŒ ์ง„ํ–‰ํ•œ๋‹ค.

์„ธ๋ฒˆ์งธ ์ธ์ž, ์ฆ‰ ์ธ๋ฑ์Šค์™€ ๊ฐœ์ˆ˜ ๋’ค์˜ ์ธ์ž๊ฐ€ ์—†์œผ๋ฉด ์‚ญ์ œ๋งŒ ์ง„ํ–‰ํ•œ๋‹ค.

 

const arr = [1, 2, 3, 4];

// ์›๋ณธ ๋ฐฐ์—ด arr์—์„œ ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ 2๊ฐœ์˜ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•œ ๋’ค ํ•ด๋‹น ์ž๋ฆฌ์— 20๊ณผ 30์„ ๋„ฃ๋Š”๋‹ค.
const result = arr.splice(1, 2, 20, 30);

// result = [1, 20, 30, 4];

 

 

 

๐Ÿ“Œ์ œ๊ฑฐ

`pop()`

๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

 

`shift()`

๋งจ ์ฒ˜์Œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

 

`filter()`

์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋งŒ ๋‚จ๊ธฐ๊ณ  ์‚ญ์ œํ•œ๋‹ค.

๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›์€ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ ๋’ค, ๋ฐ˜ํ™˜๊ฐ’์ด `true`๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋•Œ ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

let arr = [1, 2, 3, 4, 5];

arr = arr.filter( e => e !== 3 );

// arr = [1, 2, 4, 5];

 

 

[Lv.1][๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด] ์—์„œ ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์ฒ˜๋Ÿผ ๊ฐ™์€ ์š”์†Œ๊ฐ€ ์—ฐ์†๋  ๊ฒฝ์šฐ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค + 1๋Š” ์ฐธ์กฐํ•  ์š”์†Œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ `undefined`์ด ๋œ๋‹ค.

 

let arr = [1, 2, 3, 4, 4, 4, 5, 1, 2];

arr.filter( (val, index) => val !== arr[index + 1]);

// arr = [1, 2, 3, 4, 5, 1, 2]

 

 

 

์ค‘๋ณต ์š”์†Œ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

const arr = [1, 2, 3, 4, 4, 4, 5, 1, 2];

const result = arr.filter( (val, i, _arr) => _arr.indexOf(val) === i);

// result = [1, 2, 3, 4, 5]

 

 

 

๋‹ค๋งŒ ์ค‘๋ณต ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ๋Š” `Set`์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

 

const arr = [1, 2, 3, 4, 4, 4, 5, 1, 2];

const result = [...new Set(arr)];

// result = [1, 2, 3, 4, 5]

 

 

 

 

 

๐Ÿ“Œ์ž๋ฅด๊ธฐ(๋ถ€๋ถ„ ๋ฐฐ์—ด)

`slice()`

์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๋ฒ”์œ„์˜ ์š”์†Œ๋“ค์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ฒซ๋ฒˆ์งธ ์ธ์ž(start)๋Š” ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค. ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด ๋์—์„œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋œปํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `slice(-2)`๋Š” ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋‘๋ฒˆ์งธ ์ธ์ž(end)๋Š” ๋ณต์‚ฌ๋ฅผ ์ข…๋ฃŒํ•  ์ธ๋ฑ์Šค. ์ด ์ธ๋ฑ์Šค๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ๋ณต์‚ฌํ•  ๋•Œ `start` ์ธ๋ฑ์Šค๋ถ€ํ„ฐ `end - 1` ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์š”์†Œ๋งŒ ๋ณต์‚ฌ๋œ๋‹ค. ์ƒ๋žต ์‹œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด ๋œ๋‹ค.

 

 

๐Ÿ“Œ์ •๋ ฌ

`sort()`

๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ํ›„ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ์ž๋ฆฌ ์ˆ˜ ์ด์ƒ์˜ ์ˆซ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.

 

const arr = [2, 11, 3, 5, 4, 12];

arr.sort()	//	[11, 12, 2, 3, 4, 5]๊ฐ€ ๋œ๋‹ค.
arr.sort( (a, b) => a - b);	// [2, 3, 4, 5, 11, 12] ์˜ฌ๋ฐ”๋ฅธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

 

 

 

`reverse()`

๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ๋’ค์ง‘๊ณ  ํ•ด๋‹น ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

 

๐Ÿ“Œ๊ฒฐํ•ฉ

`join()`

๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•ฉ์ณ์„œ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ธ์ž๊ฐ€ ์—†์œผ๋ฉด ๊ฐ ์š”์†Œ ์‚ฌ์ด์— `,`์„ ์‚ฝ์ž…ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

๐Ÿ“Œ๊ฒ€์ƒ‰

`indexOf()`

์ธ์ž๋กœ ์ „๋‹ฌ๋œ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

`includes()`

์ธ์ž๋กœ ์ „๋‹ฌ๋œ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋ฉด `true`๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(ES7)

 

 

๐Ÿ“Œ๋ณต์‚ฌ

๋ฐฐ์—ด์˜ ์‹๋ณ„์ž๋Š” ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์‹๋ณ„์ž์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๊ฐ™์€ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.(์–•์€ ๋ณต์‚ฌ)

์˜๋„์™€ ๋‹ฌ๋ฆฌ ๊ธฐ์กด ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ณต์‚ฌํ•œ ๋ฐฐ์—ด๋„ ์ˆ˜์ •๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ๋Š”๋‹ค.

 

let arr = [2, 3, 1, 5, 4];
let copy = arr;

arr.sort();

// arr = [1, 2, 3, 4, 5];
// copy = [1, 2, 3, 4, 5];

 

 

๊ฐ™์€ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ์  ์—ฐ์‚ฐ์ž(...)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ํ• ๋‹นํ•ด์ค€๋‹ค.

 

let arr = [2, 3, 1, 5, 4];
let copy = [...arr];

arr.sort();

// arr = [1, 2, 3, 4, 5]
// copy = [2, 3, 1, 5, 4]

 

 

๐Ÿ“Œ2์ฐจ์› ๋ฐฐ์—ด ๋ณต์‚ฌ

๊ฐ ํ–‰๋งˆ๋‹ค ๋™์ผํ•˜๊ฒŒ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•ด์ค€๋‹ค.

 

let arr1 = [[1, 2], [3,4]];
let arr2 = arr1.map(e => [...e]);

arr2[0][0] = 0;

// arr1 = [[1, 2], [3,4]]
// arr2 = [[0, 2], [3,4]]

 

 

๐Ÿ“Œ์ˆœํšŒ

`forEach()`

๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ธ์ž๋กœ ๋ฐ›์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ๋‹ค.

 

const numbers = [1, 2, 3];
const pows = [];

numbers.forEach( item => pows.push(item ** 2) );

// pows = [1, 4, 9]

 

 

`map()`

์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ธ์ž๋กœ ์ „๋‹ฌ ๋ฐ›์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 

const numbers = [1, 4, 9];

const roots = numbers.map( item => Math.sqrt(item) );

// roots = [1, 2, 3]
// numbers = [1, 4, 9]

 

 

`reduce()`

์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ๋‹ค. ์ด๋•Œ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋‹ค์Œ ์ˆœํšŒ ์‹œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌํ•œ๋‹ค. 

 

function factorial (...numbers : number[]) : number{
    return numbers.reduce((acc, num) => acc * num, 1)
};

 

 

 

 

๐Ÿ“Œ๋ฐฐ์—ด ๊ตฌํ˜„ํ•˜๊ธฐ

  • `constructor`: ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์ •์˜ํ•œ๋‹ค. length๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, data๋Š” ์š”์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • `push(element)`: ๋ฐฐ์—ด ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ถ”๊ฐ€๋œ ํ›„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • `pop()`: ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • `get(index)`: ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • `delete(index)`: ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฐ์—ด์„ ์žฌ์ •๋ ฌํ•œ๋‹ค.
  • `_shiftItems(index)`: ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ์žฌ์ •๋ ฌํ•œ๋‹ค.
  • `print()`: ํ˜„์žฌ ๋ฐฐ์—ด์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

class MyArray {
    constructor() {
        this.length = 0; // ๋ฐฐ์—ด์˜ ๊ธธ์ด
        this.data = {}; // ์š”์†Œ๋ฅผ ์ €์žฅํ•  ๊ฐ์ฒด
    }

    // ์š”์†Œ๋ฅผ ๋ฐฐ์—ด์— ์ถ”๊ฐ€
    push(element) {
        this.data[this.length] = element;
        this.length++;
        return this.length;
    }

    // ๋งˆ์ง€๋ง‰ ์š”์†Œ ์ œ๊ฑฐ
    pop() {
        if (this.length === 0) return undefined;
        this.length--;
        const removedElement = this.data[this.length];
        delete this.data[this.length];
        return removedElement;
    }

    // ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ ๋ฐ˜ํ™˜
    get(index) {
        return this.data[index];
    }

    // ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ ์ œ๊ฑฐ
    delete(index) {
        const removedElement = this.data[index];
        this._shiftItems(index);
        return removedElement;
    }

    // ์š”์†Œ๋“ค์„ ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ ์žฌ์ •๋ ฌ
    _shiftItems(index) {
        for (let i = index; i < this.length - 1; i++) {
            this.data[i] = this.data[i + 1];
        }
        delete this.data[this.length - 1];
        this.length--;
    }

    // ๋ฐฐ์—ด ์ถœ๋ ฅ
    print() {
        console.log(this.data);
    }
}