Skip to content

Latest commit

ย 

History

History
545 lines (332 loc) ยท 18.9 KB

File metadata and controls

545 lines (332 loc) ยท 18.9 KB

๋ฐฐ์—ด

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ดํ•œ ์ž๋ฃŒ๊ตฌ์กฐ.

์š”์†Œ: ๋ฐฐ์—ด์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฐ’์€ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ.
์ธ๋ฑ์Šค: ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 0 ์ด์ƒ์˜ ์ •์ˆ˜. ๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•  ๋Œ€ ์‚ฌ์šฉ.

๋ฐฐ์—ด์€ ๊ฐ์ฒด์ง€๋งŒ ์ผ๋ฐ˜ ๊ฐ์ฒด์™€๋Š” ๊ตฌ๋ณ„๋˜๋Š” ๋…ํŠนํ•œ ํŠน์ง•์ด ์žˆ๋‹ค.

๊ตฌ๋ถ„ ๊ฐ์ฒด ๋ฐฐ์—ด
๊ตฌ์กฐ ํ”„๋กœํผํ‹ฐ ํ‚ค์™€ ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์ธ๋ฑ์Šค์™€ ์š”์†Œ
๊ฐ’์˜ ์ฐธ์กฐ ํ”„๋กœํผํ‹ฐ ํ‚ค ์ธ๋ฑ์Šค
๊ฐ’์˜ ์ˆœ์„œ X O
length ํ”„๋กœํผํ‹ฐ X O

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค

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

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

length ํ”„๋กœํผํ‹ฐ์™€ ํฌ์†Œ ๋ฐฐ์—ด

length ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์€ 0๊ณผ 2^32 - 1 ๋ฏธ๋งŒ์˜ ์–‘์˜ ์ •์ˆ˜๋‹ค.

length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๋ฐฐ์—ด์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ๋˜๊ณ  ๊ธธ์ด์˜ ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ length ํ”„๋กœํผํ‹ฐ๋ณด๋‹ค ํฐ ์ˆซ์ž ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ์—” length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์‹ค์ œ ๋ฐฐ์—ด์€ ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚˜์ง€๋Š” ์•Š๋Š” ๋“ฑ ์•„๋ฌด ๋ณ€ํ•จ์ด ์—†๋‹ค.

ํฌ์†Œ ๋ฐฐ์—ด์€ length์™€ ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํฌ์†Œ ๋ฐฐ์—ด์˜ length๋Š” ํฌ์†Œ ๋ฐฐ์—ด์˜ ์‹ค์ œ ์š”์†Œ ๊ฐœ์ˆ˜๋ณด๋‹ค ์–ธ์ œ๋‚˜ ํฌ๋‹ค.

ํฌ์†Œ ๋ฐฐ์—ด์€ ๊ฐœ๋…์ , ์„ฑ๋Šฅ์ ์œผ๋กœ ์ข‹์ง€ ์•Š๋Š” ์˜ํ–ฅ์„ ์ฃผ๋ฏ€๋กœ ์ง€์–‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋ฐฐ์—ด์—๋Š” ๊ฐ™์€ ํƒ€์ž…์˜ ์š”์†Œ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์œ„์น˜์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ตœ์„ ์œผ๋กœ ํ•œ๋‹ค.

๋ฐฐ์—ด ์ƒ์„ฑ

๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด

0๊ฐœ ์ด์ƒ์˜ ์š”์†Œ๋ฅผ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋Œ€๊ด„ํ˜ธ([])๋กœ ๋ฌถ๋Š”๋‹ค.

const arr = [1, 2, 3];
console.log(arr.length); // 3

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๊ณผ ๋‹ฌ๋ฆฌ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ์—†๊ณ  ๊ฐ’๋งŒ ์กด์žฌํ•œ๋‹ค.

๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์— ์š”์†Œ๋ฅผ ํ•˜๋‚˜๋„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ธ ๋นˆ ๋ฐฐ์—ด์ด ๋œ๋‹ค.

๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์— ์š”์†Œ๋ฅผ ์ƒ๋žตํ•˜๋ฉด ํฌ์†Œ ๋ฐฐ์—ด์ด ๋œ๋‹ค.

Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜

  • ์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ 1๊ฐœ์ด๊ณ  ์ˆซ์ž์ธ ๊ฒฝ์šฐ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ์ธ์ˆ˜์ธ ๋ฐฐ์—ด์„ ์ƒ์„ฑ. ์ด๋•Œ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์€ ํฌ์†Œ ๋ฐฐ์—ด๋กœ, length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ 0์ด ์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฐฐ์—ด์˜ ์š”์†Œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ์ „๋‹ฌ๋œ ์š”์†Œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋นˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

  • ์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์ด๊ฑฐ๋‚˜ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋”๋ผ๋„ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•œ๋‹ค.

Array.of

์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ 1๊ฐœ์ด๊ณ  ์ˆซ์ž์—ฌ๋„ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š”๋‹ค.

Array.of(1); // -> [1]

Array.of(1, 2, 3); // -> [1, 2, 3]

Array.from

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

Array.from({ length: 2, 0: 'a', 1: 'b'}); // -> ['a', 'b']

Array.from('Hello'); // -> ['H', 'e', 'l', 'l', 'o']

๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๋งŒ๋“ค๋ฉด์„œ ์š”์†Œ๋ฅผ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค.

Array.from({length: 3}); // -> [undefined, undefined, undefined]

Array.from({length: 3}, (_, i) => i); // -> [0, 1, 2]

๋ฐฐ์—ด ์š”์†Œ์˜ ์ฐธ์กฐ

๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ์œ„์น˜์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

const arr =[1, 2, 3];

console.log(arr[2]); // 3

์กด์žฌํ•˜์ง€ ์•Š๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•˜๋ฉด undefined๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

๋ฐฐ์—ด ์š”์†Œ์˜ ์ถ”๊ฐ€์™€ ๊ฐฑ์‹ 

์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค. length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ์ž๋™ ๊ฐฑ์‹ ๋œ๋‹ค.

const arr = [0];

arr[1] = 1;

console.log(arr); // [0, 1];

๋งŒ์•ฝ ํ˜„์žฌ ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’๋ณด๋‹ค ํฐ ์ธ๋ฑ์Šค๋กœ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ํฌ์†Œ ๋ฐฐ์—ด์ด ๋œ๋‹ค.

arr[100] = 100;

console.log(arr); // [0, 1, empty x 98, 100]

์ด๋ฏธ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š” ์š”์†Œ์— ๊ฐ’์„ ์žฌํ• ๋‹นํ•˜๋ฉด ์š”์†Œ๊ฐ’์ด ๊ฐฑ์‹ ๋œ๋‹ค.

arr[1] = 10;

console.log(arr); // [0, 10, empty x 98, 100];

๋งŒ์•ฝ ์ •์ˆ˜ ์ด์™ธ์˜ ๊ฐ’์„ ์ธ๋ฑ์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์ด๋•Œ ์ถ”๊ฐ€๋œ ํ”„๋กœํผํ‹ฐ๋Š” length ํ”„๋กœํผํ‹ฐ ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋ฐฐ์—ด ์š”์†Œ์˜ ์‚ญ์ œ

delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๋ฐฐ์—ด์€ ํฌ์†Œ ๋ฐฐ์—ด์ด ๋˜๋ฉฐ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ delete ์—ฐ์‚ฐ์ž๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํฌ์†Œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด์„œ ๋ฐฐ์—ด์˜ ํŠน์ • ์š”์†Œ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๋ ค๋ฉด Array.prototype.splice ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

const arr = [1, 2, 3];

// Array.prototype.splice(์‚ญ์ œ๋ฅผ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค, ์‚ญ์ œํ•  ์š”์†Œ ์ˆ˜)
// arr[1]๋ถ€ํ„ฐ 1๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
arr.splice(1, 1);
console.log(arr); // [1, 3]

// length ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ž๋™ ๊ฐฑ์‹ ๋จ
console.log(arr.length); // 2

๋ฐฐ์—ด ๋ฉ”์„œ๋“œ

์›๋ณธ ๋ฐฐ์—ด(๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด, ์ฆ‰ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„์ฒด ๋‚ด๋ถ€์—์„œ this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด)์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ์™€ ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.

Array.isArray

์ •์  ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ ๋ฐฐ์—ด์ด๋ฉด true, ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.indexOf

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

์›๋ณธ ๋ฐฐ์—ด์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์š”์†Œ์™€ ์ค‘๋ณต๋˜๋Š” ์š”์†Œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด ์ฒซ ๋ฒˆ์งธ๋กœ ๊ฒ€์ƒ‰๋œ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์›๋ณธ ๋ฐฐ์—ด์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

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

arr.indexOf(2); // -> 1

arr.indexOf(4); // -> -1

// ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค๋‹ค. ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰.
arr.indexOf(2, 2); // -> 2

๋ฐฐ์—ด์— ํŠน์ •์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์œ ์šฉํ•˜์ง€๋งŒ indexOf ๋Œ€์‹  Array.prototype.includes๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹๋‹ค.

Array.prototype.push

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ๊ฐ’์„ ์›๋ณธ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const arr = [1, 2];

let result = arr.push(3, 4);
console.log(result); // 4

console.log(arr); [1, 2, 3, 4]

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

const arr = [1, 2];

const newArr = [...arr, 3];
console.log(newArr); [1, 2, 3]

Array.prototype.pop

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

์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.

const arr = [1, 2];

let result = arr.pop();
console.log(result); // 2

console.log(arr); [1]

Array.prototype.unshift

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ๊ฐ’์„ ์›๋ณธ ๋ฐฐ์—ด์˜ ์„ ๋‘์— ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.

const arr = [1, 2];

let result = arr.unshift(3, 4);
console.log(result); // 4

console.log(arr); // [3, 4, 1, 2]

Array.prototype.shift

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

์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.

const arr = [1, 2];

let result = arr.shift();
console.log(result); // 1

console.log(arr); // [2]

Array.prototype.concat

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

์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์ด ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ํ•ด์ฒดํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

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

Array.prototype.splice

์›๋ณธ ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ค‘๊ฐ„์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

3๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉฐ ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.

  • start: ์›๋ณธ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค๋‹ค. start๋งŒ ์ง€์ •ํ•˜๋ฉด ์›๋ณธ ๋ฐฐ์—ด์˜ start๋ถ€ํ„ฐ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. start๊ฐ€ ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์—์„œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • deleteCount: ์›๋ณธ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค์ธ start๋ถ€ํ„ฐ ์ œ๊ฑฐํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋‹ค. deleteCount๊ฐ€ 0์ธ ๊ฒฝ์šฐ ์•„๋ฌด๋Ÿฐ ์š”์†Œ๋„ ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • items: ์ œ๊ฑฐํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•  ์š”์†Œ๋“ค์˜ ๋ชฉ๋ก์ด๋‹ค. ์ƒ๋žตํ•  ๊ฒฝ์šฐ ์›๋ณธ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋“ค์„ ์ œ๊ฑฐํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค.
const arr = [1, 2, 3, 4];

const result = arr.splice(1, 2, 20, 30);

console.log(result); // [2, 3];
console.log(arr); // [1, 20, 30, 4]

Array.prototype.slice

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๋ฒ”์œ„์˜ ์š”์†Œ๋“ค์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

2๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๋ฉฐ ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • start: ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค. ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์—์„œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • end: ๋ณต์‚ฌ๋ฅผ ์ข…๋ฃŒํ•  ์ธ๋ฑ์Šค. ์ด ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด๋‹ค.

slice์˜ ์ธ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ƒ๋žตํ•˜๋ฉด ์›๋ณธ ๋ฐฐ์—ด์„ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.join

์›๋ณธ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด, ์ฆ‰ separator๋กœ ์—ฐ๊ฒฐํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

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

// ๊ธฐ๋ณธ ๊ตฌ๋ถ„์ž๋Š” ์ฝค๋งˆ
arr.join(); // -> '1,2,3,4'

arr.join(''); // -> '1234'

arr.join(':'); // -> 1:2:3:4

Array.prototype.reverse

์›๋ณธ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘๋Š”๋‹ค.

์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋˜๊ณ  ์ด ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const arr = [1, 2, 3];
const result = arr.reverse();

console.log(arr); // [3, 2, 1]

console.log(result); // [3, 2, 1]

Array.prototype.fill

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

const arr = [1, 2, 3];

arr.fill(0);

console.log(arr); // [0, 0, 0]

๋‘๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์š”์†Œ ์ฑ„์šฐ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค์™€ ์„ธ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์š”์†Œ ์ฑ„์šฐ๊ธฐ๋ฅผ ๋ฉˆ์ถœ ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

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

arr.fill(0, 1, 3);

console.log(arr); // [1, 0, 0, 4, 5]

Array.prototype.includes

๋ฐฐ์—ด ๋‚ด์— ํŠน์ • ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ true ๋˜๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜: ๊ฒ€์ƒ‰ํ•  ๋Œ€์ƒ
๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜: ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค. ์ƒ๋žตํ•  ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’ 0. ๋งŒ์•ฝ ์Œ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด length ํ”„๋กœํผํ‹ฐ ๊ฐ’๊ณผ ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ํ•ฉ์‚ฐํ•˜์—ฌ ๊ฒ€์ƒ‰ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•œ๋‹ค.

const arr = [1, 2, 3];

arr.includes(1, 1); // false

arr.includes(3, -1); // true

Array.prototype.flat

์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๊นŠ์ด๋งŒํผ ์žฌ๊ท€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ํ‰ํƒ„ํ™”ํ•œ๋‹ค.

์ค‘์ฒฉ ๋ฐฐ์—ด์„ ํ‰ํƒ„ํ™”ํ•  ๊นŠ์ด๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ์ˆ˜ ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€ 1.
์ธ์ˆ˜๋กœ Infinity๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์ค‘์ฒฉ ๋ฐฐ์—ด ๋ชจ๋‘๋ฅผ ํ‰ํƒ„ํ™”ํ•œ๋‹ค.

[1, [2, [3, [4]]]].flat(); // -> [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(1); // -> [1, 2, [3, [4]]]

[1, [2, [3, [4]]]].flat(2); // -> [1, 2, 3, [4]]

[1, [2, [3, [4]]]].flat(Infinity); // -> [1, 2, 3, 4]

๋ฐฐ์—ด ๊ณ ์ฐจ ํ•จ์ˆ˜

๊ณ ์ฐจ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.
๊ณ ์ฐจ ํ•จ์ˆ˜๋Š” ์™ธ๋ถ€ ์ƒํƒœ์˜ ๋ณ€๊ฒฝ์ด๋‚˜ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ”ผํ•˜๊ณ  ๋ถˆ๋ณ€์„ฑ์„ ์ง€ํ–ฅํ•˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ๋‹ค.

Array.prototype.sort

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

๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•œ๋‹ค.

const fruits = ['Banana', 'Orange', 'Apple'];

fruits.sort();

console.log(fruits); // ['Apple', 'Banana', 'Orange']

์ˆซ์ž ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ํฌ์ธํŠธ์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„ํ•œ ๋Œ€๋กœ ์ •๋ ฌ๋˜์ง€ ์•Š๋Š”๋‹ค.
๋”ฐ๋ผ์„œ ์ˆซ์ž ์š”์†Œ๋ฅผ ์ •๋ ฌํ•  ๋•Œ๋Š” sort ๋ฉ”์„œ๋“œ์— ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.
๋น„๊ต ํ•จ์ˆ˜๋Š” ์–‘์ˆ˜๋‚˜ ์Œ์ˆ˜ ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด(์Œ์ˆ˜) ๋น„๊ต ํ•จ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ์šฐ์„ ํ•˜์—ฌ ์ •๋ ฌํ•˜๊ณ , 0์ด๋ฉด ์ •๋ ฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, 0๋ณด๋‹ค ํฌ๋ฉด(์–‘์ˆ˜) ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ์šฐ์„ ํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค.

const points = [40, 100, 1, 5, 2, 25, 10];

points.sort();

console.log(points); // [1, 10, 100, 2, 25, 40, 5]

points.sort((a, b) => a - b);
console.log(points); // [1, 2, 5, 10, 25, 40, 100]

// ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
points.sort((a, b) => b - a);
console.log(points); // [100, 40, 25, 10, 5, 2, 1]

Array.prototype.forEach

๋ฐ˜๋ณต์„ ์œ„ํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•˜๋ฉฐ, ์กฐ๊ฑด์‹๊ณผ ์ฆ๊ฐ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ถ”๊ตฌํ•˜๋Š” ๋ฐ”์™€ ๋งž์ง€ ์•Š๋Š” for ๋ฌธ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜๋‹ค.

forEach ๋ฉ”์„œ๋“œ๋Š” ๋‚ด๋ถ€์—์„œ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ฒ˜๋ฆฌ๋ฅผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ๋‹ค.

const numbers = [1, 2, 3];

const pows = [];

numbers.forEach(item => pows.push(item ** 2));
console.log(pows); // [1, 4, 9]

์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์ง€๋งŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.

์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ 3๊ฐœ(์š”์†Œ๊ฐ’, ์ธ๋ฑ์Šค, this)์˜ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

forEach์˜ ๋ฐ˜ํ™˜๊ฐ’์€ ์–ธ์ œ๋‚˜ undefined๋‹ค.

for ๋ฌธ๊ณผ ๋‹ฌ๋ฆฌ break, continue ๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ค‘๊ฐ„์— ์ˆœํšŒ๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์—†๋‹ค.

Array.prototype.map

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

const numbers = [1, 4, 9];

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

console.log(roots); // [1, 2, 3]

console.log(numbers); // [1, 4, 9]

map ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ map ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’๊ณผ ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•œ๋‹ค. ์ฆ‰, ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด๊ณผ map ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ ๋ฐฐ์—ด์€ 1:1 ๋งคํ•‘ํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ map ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ this๋กœ ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Array.prototype.filter

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

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

const odds = numbers.filter(item => item % 2);
console.log(odds); // [1, 3, 5]

filter ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ filter ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘๋‹ค.

์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์—์„œ ํŠน์ • ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Array.prototype.reduce

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

reduce ๋ฉ”์„œ๋“œ์˜ ์ธ์ˆ˜
์ฒซ ๋ฒˆ์งธ: ์ฝœ๋ฐฑ ํ•จ์ˆ˜
๋‘ ๋ฒˆ์งธ: ์ดˆ๊ธฐ๊ฐ’

reduce ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜
์ฒซ ๋ฒˆ์งธ: ์ดˆ๊ธฐ๊ฐ’ ๋˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ด์ „ ๋ฐ˜ํ™˜๊ฐ’
๋‘ ๋ฒˆ์งธ: reduce ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ’
์„ธ ๋ฒˆ์งธ: reduce ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
๋„ค ๋ฒˆ์งธ: reduce ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์ž์ฒด

Array.prototype.some

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

ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ด๋ฉด ์–ธ์ œ๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜.

[5, 10, 15].some(item => item > 10); // -> true

[5, 10, 15].some(item => item < 0); // -> false

Array.prototype.every

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

ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ด๋ฉด ์–ธ์ œ๋‚˜ true๋ฅผ ๋ฐ˜ํ™˜.

[5, 10, 15].every(item => item > 3); // -> true

[5, 10, 15].every(item => item > 10); // -> false

Array.prototype.find

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

์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const users = [
    { id: 1, name: 'Lee' },
    { id: 2, name: 'Kim' },
    { id: 3, name: 'Choi' },
    { id: 4, name: 'Park' }
];

users.find(user => user.id === 2); // -> {id: 2, name: 'Kim'}

Array.prototype.findIndex

์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ฝœ๋ฐฑ ใ…Žใ…์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜๊ฐ’์ด ture์ธ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Array.prototype.faltMap

map ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ํ‰ํƒ„ํ™”ํ•œ๋‹ค.
์ฆ‰, map ๋ฉ”์„œ๋“œ์™€ flat ๋ฉ”์„œ๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.

const arr = ['hello', 'world'];

arr.map(x => x.split('')).flat();
// -> ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']

arr.flatMap(x => x.split(''));
// -> ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']

flat ๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ‰ํƒ„ํ™” ๊นŠ์ด๋ฅผ ์ง€์ •ํ•  ์ˆ˜๋Š” ์—†๊ณ  1๋‹จ๊ณ„๋งŒ ํ‰ํƒ„ํ™”ํ•œ๋‹ค.