๐Ÿ“– ๋ฐฐ์—ด

c_yjยท2022๋…„ 7์›” 3์ผ
0

DeepDive

๋ชฉ๋ก ๋ณด๊ธฐ
24/42
post-thumbnail

๐Ÿ˜ ๋ฐฐ์—ด์ด๋ž€?

๋ฐฐ์—ด์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ดํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ๋ฐฐ์—ด์€ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋งค์šฐ ๋†’์€ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ๋ฐฐ์—ด์€ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์œผ๋ฏ€๋กœ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ฝ”๋”ฉ์— ๋งค์šฐ ๋„์›€์ด ๋œ๋‹ค.

const arr = ['apple', 'banana', 'orange'];

๋ฐฐ์—ด์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์„ ์š”์†Œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์›์‹œ๊ฐ’์€ ๋ฌผ๋ก  ๊ฐ์ฒด, ํ•จ์ˆ˜, ๋ฐฐ์—ด ๋“ฑ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ’์œผ๋กœ ์ธ์ •ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฐ์—ด์˜ ์š”์†Œ์—๋Š” ๋ฐฐ์—ด์—์„œ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 0 ์ด์ƒ์˜ ์ •์ˆ˜์ธ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–๋Š”๋‹ค.
๋ฐฐ์—ด์˜ ์š”์†Œ์˜ ๊ฐœ์ˆ˜, ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” lengthํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค

arr.lenghth // 3

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋ฐฐ์—ด์ด๋ผ๋Š” ํƒ€์ž…์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋ฐ ๋ฐฐ์—ด์€ ๊ฐ์ฒด ํƒ€์ž…์ด๋‹ค.

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

์ผ๋ฐ˜ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฐ€์žฅ ๋ช…ํ™•ํ•œ ์ฐจ์ด๋Š” "๊ฐ’์˜ ์ˆœ์„œ"์™€ "lenghth ํ”„๋กœํผํ‹ฐ"๋‹ค

๋ฐฐ์—ด์˜ ์žฅ์ 
๊ฐ’์˜ ์ˆœ์„œ์™€ length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅ

  • ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋งˆ์ง€๋ง‰๋ถ€ํ„ฐ ์—ญ์ˆœ์œผ๋กœ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ๋‹ค
  • ํŠน์ • ์œ„์น˜๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜๋„ ์žˆ๋‹ค

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

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

โœ๏ธ ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์˜ ์žฅ๋‹จ์ 

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

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

length ํ”„๋กœํผํ‹ฐ๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜, ์ฆ‰ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 0 ์ด์ƒ์˜ ์ •์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ–๋Š”๋‹ค. length ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์€ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ 0์ด๋ฉฐ, ๋นˆ ๋ฐฐ์—ด์ด ์•„๋‹ ๊ฒฝ์šฐ ๊ฐ€์žฅ ํฐ ์ธ๋ฑ์Šค์— 1์„ ๋”ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

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

โœ”๏ธ ๋ฐฐ์—ด ์ƒ์„ฑ

โœ๏ธ ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด

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

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

โœ๏ธ Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜

Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋“ฏ์ด Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ์ „๋‹ฌ๋œ ์ธ์ˆ˜์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”

โœ๏ธ Array.of

ES6์—์„œ ๋„์ž…๋œ Array.of ๋ฉ”์„œ๋“œ๋Š” ์ „๋‹ฌ๋œ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑ, Array ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ 1๊ฐœ์ด๊ณ  ์ˆซ์ž์ด๋”๋ผ๋„ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑ

// ์ „๋‹ฌ๋œ ์ธ์ˆ˜๊ฐ€ 1๊ฐœ์ด๊ณ  ์ˆซ์ž์ด๋”๋ผ๋„ ์ธ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑ
Array.of(1); // [1]
Array.of(1,2,3); // [1,2,3]
Array.of('string'); // ['string']

โœ๏ธ Array.from

ES6์—์„œ ๋„์ž…๋œ Array.from ๋ฉ”์„œ๋“œ๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด ๋˜๋Š” ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜

// ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
Array.from({length: 2, 0: 'a', 1: 'b'}); // ['a','b']

// ์ดํ„ฐ๋Ÿฌ๋ธ”์„ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค. ๋ฌธ์ž์—ด์€ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด๋‹ค.
Array.from('Hello'); // ['H','e','l','l','o']

๐Ÿ“‹ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด์™€ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด
์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋Š” ๋งˆ์น˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋กœ ํ”„๋กœํผํ‹ฐ ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  length ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋Š” ๋งˆ์น˜ ๋ฐฐ์—ด์ฒ˜๋Ÿผ for ๋ฌธ์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋Š” Symbol.iterator ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ for...of ๋ฌธ์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•๊ณผ ๋ฐฐ์—ด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ• ๋‹น์˜ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.

โœ”๏ธ ๋ฐฐ์—ด ์š”์†Œ์˜ ์ฐธ์กฐ

๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ์—๋Š” ๋Œ€๊ด„ํ˜ธ([]) ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€๊ด„ํ˜ธ ์•ˆ์—๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์™€์•ผ ํ•œ๋‹ค. ์ •์ˆ˜๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์ด๋ผ๋ฉด ์ธ๋ฑ์Šค ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•จ
์กด์žฌํ•˜์ง€ ์•Š๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•˜๋ฉด undefined๊ฐ€ ๋ฐ˜ํ™˜

โœ”๏ธ ๋ฐฐ์—ด ์š”์†Œ์˜ ์ถ”๊ฐ€์™€ ๊ฐฑ์‹ 

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

const arr = [0];

// ๋ฐฐ์—ด ์š”์†Œ์˜ ์ถ”๊ฐ€
arr[1] = 1;

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

โœ”๏ธ ๋ฐฐ์—ด ์š”์†Œ์˜ ์‚ญ์ œ

๋ฐฐ์—ด์€ ์‚ฌ์‹ค ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ํŠน์ • ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํฌ์†Œ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” 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

โœ”๏ธ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ

๋ฐฐ์—ด์€ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฏ€๋กœ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ž˜ ์•Œ์•„๋‘์ž!
๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŒจํ„ด์ด ๋‘ ๊ฐ€์ง€์ด๋‹ค
1. ๋ฐฐ์—ด์—๋Š” ์›๋ณธ ๋ฐฐ์—ด(๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด, ์ฆ‰ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ์˜ ๊ตฌํ˜„์ฒด ๋‚ด๋ถ€์—์„œ this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด)์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ
2. ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ใ…ฃ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค
.

const arr = [1];

// push ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด(arr)์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค
arr.push(2);
console.log(arr); // [1,2]

// concat ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด(arr)์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const result = arr.concat(3);
console.log(arr); // [1,2]
console.log(result); // [1,2,3]

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

โœ๏ธ Array.isArray

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

โœ๏ธ Array.prototype.indexOf

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

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

// ๋ฐฐ์—ด arr์—์„œ ์š”์†Œ 2๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฒซ ๋ฒˆ์Ÿค๋กœ ๊ฒ€์ƒ‰๋œ ์š”์†Œ์˜ ์ธ๋ฐ์Šค๋ฅผ ๋ฐ˜ํ™˜
arr.indexOf(2); // 1

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

const foods = ['apple', 'banana', 'orange'];

// food ๋ฐฐ์—ด์— 'orange' ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
if(!foods.includes('orange')) {
  // foods ๋ฐฐ์—ด์— 'orange' ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด 'orange' ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  foods.push('orange')
}

console.log(foods); // ["apple","banana","orange"]

โœ๏ธ Array.prototype.push

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

const arr = [1,2] ;

// ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ๊ฐ’์„ ์›๋ณธ ๋ฐฐ์—ด arr์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ length ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
let result = arr.push(3,4);
console.log(result); 4

// push ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝ
console.log(arr); // [1,2,3,4]

push ๋ฉ”์„œ๋“œ๋Š” ์„ฑ๋Šฅ ๋ฉด์—์„œ ์ข‹์ง€ ์•Š๋‹ค. ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•  ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ผ๋ฉด push ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  length ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์š”์†Œ๋กค ์ง์ ‘ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

const arr = [1,2];

// arr.push(3)๊ณผ ๋™์ผํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค. ์ด ๋ฐฉ๋ฒ•์ด push ๋ฉ”์„œ๋“œ๋ณด๋‹ค ๋น ๋ฅด๋‹ค
arr[arr.length] = 3;
console.log(arr); // [1,2,3]

push๋ณด๋‹ค ES6์˜ ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค.

โœ๏ธ Array.prototype.pop

pop ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์œผ๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜. pop๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝ

const arr = [1.2];

// ์›๋ณธ ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
let result = arr.pop();
console.log(result); //2

// pop ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.
console.log(arr); // [1]

๐Ÿ”‘ ์Šคํ…์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ง€๋ง‰์— ๋ฐ€์–ด ๋„ฃ๊ณ , ๋งˆ์ง€๋ง‰์— ๋ฐ€์–ด ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊บผ๋‚ด๋Š” ํ›„์ž… ์„ ์ถœ ๋ฐฉ์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.
์Šคํƒ์€ ์–ธ์ œ๋‚˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋ฐ€์–ด ๋„ฃ์€ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ทจ๋“ํ•œ๋‹ค. ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ€์–ด ๋„ฃ๋Š” ๊ฒƒ์„ ํ‘ธ์‹œ๋ผํ•˜๊ณ  ๊บผ๋‚ด๋Š” ๊ฒƒ์„ ํŒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

โœ๏ธ Array.prototype.unshift

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

const arr = [1,2]

// ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ๊ฐ’์„ ์›๋ณธ ๋ฐฐ์—ด์˜ ์„ ๋‘์— ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ length ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
let result = arr.unshift(3,4);
console.log(result); // 4

// unshift ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝ
console.log(arr); // [1,2,3,4]

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

โœ๏ธ Array.prototype.shift

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

const arr = [1,2]

// ์›๋ณธ ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์จฐ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
let result = arr.shift();
console.log(result); // 1

// shift ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝ
console.log(arr); // [2]

shift ๋ฉ”์„œ๋“œ์™€ push ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”‘ ํ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ง€๋ง‰์— ๋ฐ€์–ด ๋„ฃ๊ณ , ์ฒ˜์Œ ๋ฐ์ดํ„ฐ, ์ฆ‰ ๊ฐ€์žฅ ๋จผ์ € ๋ฐ€์–ด ๋„ฃ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊บผ๋‚ด๋Š” ์„ ์ž… ์„ ์ถœ๋ฐฉ์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ์Šคํƒ์€ ์–ธ์ œ๋‚˜ ๋งˆ์ง€๋ง‰์— ๋ฐ€์–ด ๋„ฃ์€ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์ทจ๋“ํ•˜์ง€๋งŒ ํ๋Š” ์–ธ์ œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ€์–ด ๋„ฃ์€ ์ˆœ์„œ๋Œ€๋กœ ์ทจ๋“ํ•จ.

โœ๏ธ Array.prototype.concat

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

const arr1 = [1,2];
const arr2 = [3.4];

// ๋ฐฐ์—ด arr๋ฅผ ์›๋ณธ ๋ฐฐ์—ด arr1์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์ด ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ํ•ด์ฒดํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.
let result = arr1.concat(arr2);
console.log(result); // [1,2,3,4]

// ์ˆซ์ž๋ฅผ ์›๋ณธ ๋ฐฐ์—ด arr1์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
result = arr1.concat(3);
console.log(result); // [1,2,3]

// ๋ฐฐ์—ด arr2์™€ ์ˆซ์ž๋ฅผ ์›๋ณธ ๋ฐฐ์—ด arr1์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ์ถ”๊ฐ€ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
result = arr1.concat(arr2,5);
console.log(result); // [1,2,3,4,5]

// ์›๋ณธ ๋ฐฐ์—ด์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.
console.log(arr1); // [1,2]

โญ๏ธโญ๏ธโญ๏ธ๊ทธ๋ƒฅ ES6์˜ ์ŠคํŽ˜๋ฅด๋“œ ๋ฌธ๋ฒ•์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•˜์ž.

โœ๏ธ Array.prototype.splice

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

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

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

// ์ œ๊ฑฐํ•œ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
console.log(result); // [2,3]
// splice ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.
console.log(arr); // [1,20,30,4]

splice ๋ฉ”์„œ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜, ์ฆ‰ ์ œ๊ฑฐํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ 0์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ์•„๋ฌด๋Ÿฐ ์š”์†Œ๋„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ์š”์†Œ๋“ค์„ ์‚ฝ์ž…ํ•œ๋‹ค.

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

// ์›๋ณธ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ 0๊ฐœ์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ทธ ์ž๋ฆฌ์— ์ƒˆ๋กœ์šด ์š”์†Œ 100์„ ์‚ฝ์ž…ํ•œ๋‹ค.
const result = arr.splice(1,0,100);

// ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.
console.log(arr); // [1,100,2,3,4]
// ์ œ๊ฑฐํ•œ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
console.log(result); // []

splice ๋ฉ”์„œ๋“œ์˜ ์„ธ ๋ฒˆ์จฐ ์ธ์ˆ˜, ์ฆ‰ ์ œ๊ฑฐํ•œ ์œ„์น˜์— ์ถ”๊ฐ€ํ•  ์š”์†Œ๋“ค์˜ ๋ชฉ๋ก์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ์›๋ณธ ๋ฐฐ์—ด์—์„œ ์ง€์ •๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค.

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

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

// ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.
console.log(arr); // [1,4]
// ์ œ๊ฑฐํ•œ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
console.log(result); // [2,3]

splice ๋ฉ”์„œ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜, ์ฆ‰ ์ œ๊ฑฐํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ฒซ ๋ฒˆ์จฐ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

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

// ์›๋ณธ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
const result = arr.splice(1);

// ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค.
console.log(arr); // [1]
// ์ œ๊ฑฐํ•œ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค.
console.log(result); // [2,3,4]

๋ฐฐ์—ด์—์„œ ํŠน์ • ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด indexOf ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํŠน์ • ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ทจ๋“ํ•œ ๋‹ค์Œ splice ๋ฉ”์„œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

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

// ๋ฐฐ์—ด array์—์„œ item ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. item ์š”์†Œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋งŒ ์ œ๊ฑฐํ•œ๋‹ค.
function remove(array,item) {
  // ์ œ๊ฑฐํ•  item ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ทจ๋“ํ•œ๋‹ค.
  const index = array.indexOf(item);
  
  // ์ œ๊ฑฐํ•  item ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ œ๊ฑฐํ•œ๋‹ค.
  if (index !== -1) array.splice(index,1);
  
  return array;
}
console.log(remove(arr,2)); // [1,3,1,2]
console.log(remove(arr,10)); // [1,3,1,2]

filter ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠน์ • ์š”์†Œ๊ฐ€ ์ค‘๋ณต๋œ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ œ๊ฑฐ๋จ.

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

// ๋ฐฐ์—ด array์—์„œ ๋ชจ๋“  item ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
function removeAll(array,item) {
  return array.filter(v => v !== item);
}

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

โœ๏ธ Array.prototype.slice

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

  • start : ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•œ ์ธ๋ฑ์Šค๋‹ค. ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์—์„œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด slice(-2)๋Š” ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋ณต์†Œํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • end: ๋ณต์‚ฌ๋ฅผ ์ข…๋ฃŒํ•  ์ธ๋ฑ์Šค๋‹ค. ์ด ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š”๋‹ค. end๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ƒ๋žต ์‹œ ๊ธฐ๋ณธ๊ฐ’์€ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด๋‹ค.
const arr = [1,2,3];

// arr[0]๋ถ€ํ„ฐ arr[1] ์ด์ „(arr[1] ๋ฏธํฌํ•จ)๊นŒ์ง€ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.slice(0,1) // [1]

// arr[1]๋ถ€ํ„ฐ arr[2] ์ด์ „(arr[2] ๋ฏธํฌํ•จ)๊นŒ์ง€ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.slice(1,2) // [2]

//์›๋ณธ์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.
console.log(arr); // [1,2,3]

slice ๋ฉ”์„œ๋“œ๋Š” ์ฒซ ๋ฒˆ์จฐ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋‘ ๋ฒˆ์จฐ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ธ๋ฑ์Šค ์ด์ „๊นŒ์ง€ ์š”์†Œ๋“ค์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const arr = [1,2,3]

// arr[1]๋ถ€ํ„ฐ ์ดํ›„์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.slice(1); // [2,3]

slice ๋ฉ”์„œ๋“œ์˜ ์ฒซ ๋ฒˆ์จฐ ์ธ์ˆ˜๊ฐ€ ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

const arr = [1,2,3]

// ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ ์š”์†Œ๋ฅผ ํ•œ ๊ฐœ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋””.
arr.slice(-1); // [3]
// ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ ์š”์†Œ๋ฅผ ๋‘ ๊ฐœ ๋ณต์‚ฌํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.slice(-2); // [2,3]'

slice ๋ฉ”์„œ๋“œ์˜ ์ธ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ƒ๋žตํ•˜๋ฉด ์›๋ณธ ๋ฐฐ์—ด์˜ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜

const arr = [1,2,3];

// ์ธ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ƒ๋žตํ•˜๋ฉด ์›๋ณธ ๋ฐฐ์—ด์˜ ๋ณต์‚ฌ๋ณธ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const copy = arr.slice();
console.log(copy); // [1,2,3]
console.log(copy === arr); // false

์ด๋•Œ ์ƒ์„ฑ๋œ ๋ณต์‚ฌ๋ณธ์€ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ

const todos = [
  { id: 1, content: 'HTML', completed: false},
  { id: 2, content: 'HTML', completed: false},
  { id: 3, content: 'HTML', completed: false}
];

// ์–•์€ ๋ณต์‚ฌ(shallow copy)
const _todos = todos.slice();
// const _todos = [...todos]

// _todo์™€ todos๋Š” ์ฐธ์กฐ๊ฐ’์ด ๋‹ค๋ฅธ ๋ณ„๊ฐœ์˜ ๊ฐ์ฒด๋‹ค.
console.log(_todos === todos); // false

// ๋ฐฐ์—ด ์š”์†Œ์˜ ์ฐธ์กฐ๊ฐ’์ด ๊ธธ๋‹ค. ์ฆ‰, ์–•์€ ๋ณต์‚ฌ๋˜์—ˆ๋‹ค.
console.log(_todos[0] === todos[0]); // true

Array.form ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

function sum() {
  const arr = Array.from(arguments);
  console.log(arr); // [1,2,3]
  
  return arr.reduce((pre, cur) => pre + cur, 0);
}

console.log(sum(1,2,3)); // 6

์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋Š” ES6์˜ ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

function sum() {
  // ์ดํ„ฐ๋Ÿฌ๋ธ”์„ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜(ES6 ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•)
  const arr = [...arguments];
  console.log(arr); // [1,2,3]
  
  return arr.reduce((pre,cur) => pre + cur, 0);
}
console.log((sum(1,2,3)); // 6

โœ๏ธ Array.prototype.join

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

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

// ๊ธฐ๋ณธ ๊ตฌ๋ถ„์ž๋Š” ์ฝค๋งˆ๋‹ค.
// ์›๋ณธ ๋ฐฐ์—ด arr์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ ํ›„ ๊ธฐ๋ณธ ๊ตฌ๋ถ„์ž๋กœ ์—ฐ๊ฒฐํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.join(); // '1,2,3,4';

// ์›๋ณธ ๋ฐฐ์—ด arr์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ๋นˆ ๋ฌธ์ž์—ด๋กœ ์—ฐ๊ฒฐํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.join(''); // '1234'

// ์›๋ณธ ๋ฐฐ์—ด arr์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๊ตฌ๋ถ„์ž ':'๋กœ ์—ฐ๊ฒฐํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
arr.join(':') // '1:2:3:4'

โœ๏ธ Array.prototype.reverse

reverse ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋’ค์ง‘๋Š”๋‹ค. ์ด๋–„ ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ๋œ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์€ ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์ด๋‹ค.

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

// reverse ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.
console.log(arr); // [3,2,1]
// ๋ฐ˜ํ™˜๊ฐ’์€ ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์ด๋‹ค.
console.log(result); // [3,2,1]

โœ๏ธ Array.prototype.fill

ES6์—์„œ ๋„์ž…๋œ fill ๋ฉ”์„œ๋“œ๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์š”์†Œ๋กœ ์ฑ„์šด๋‹ค. ์›๋ณธ ๋ฐฐ์—ด์ด ๋ณ€๊ฒฝ

const arr= [1,2,3]

// ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’ 0์„ ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์š”์†Œ๋กœ ์ฑ„์šด๋‹ค.
arr.fill(0);

// fill ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.
console.log(arr); // [0,0,0]

๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์š”์†Œ ์ฑ„์šฐ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์š”์†Œ ์ฑ„์šฐ๊ธฐ๋ฅผ ๋ฉˆ์ถœ ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
fill ๋ฉ”์„œ๋“œ๋กœ ์š”์†Œ๋ฅผ ์ฑ„์šธ ๊ฒฝ์šฐ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์œผ๋กœ ์ฑ„์šธ ์ˆ˜๋ฐ–์— ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
Array.from ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‘ ๋ฒˆ์จฐ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์š”์†Œ๊ฐ’์„ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์—ด์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋‹ค.
Array.from ๋ฉ”์„œ๋“œ๋Š” `๋‘ ๋ฒˆ์จฐ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ’๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋ฉด์„œ ํ˜ธ์ถœํ•˜๊ณ , ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜.

// ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ •์ˆ˜๋งŒํผ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  0๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์š”์†Œ๋ฅผ ์ฑ„์šด๋‹ค.
const sequences = (length = 0) => Array.from({ length }. (_, 1) => i);
// const sequences = (length = 0) => Array.from(new Array(length), (_, i) => i);

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

โœ๏ธ Array.prototype.includes

ES7์—์„œ ๋„์ž…๋œ includes ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด ๋‚ด์— ํŠน์ • ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ true ๋˜๋Š” false๋ฅผ ๋ฐ˜ํ™˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ๊ฒ€์ƒ‰ํ•  ๋Œ€์ƒ์„ ์ง€์ •.

const arr = [1,2,3];

// ๋ฐฐ์—ด์— ์š”์†Œ 2๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
arr.includes(2); // true

// ๋ฐฐ์—ด์— ์š”์†Œ 100์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
arr.includes(100); // false

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

const arr = [1,2,3];

// ๋ฐฐ์—ด์— ์š”์†Œ 1์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ํ™•์ธํ•œ๋‹ค.
arr.includes(1,1); // false

// ๋ฐฐ์—ด์— ์š”์†Œ 3์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ธ๋ฑ์Šค 2(arr.length - 1)๋ถ€ํ„ฐ ํ™•์ธํ•œ๋‹ค.
arr.includes(3,-1); // true	

โœ๏ธ Array.prototype.flat

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

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

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

โœ”๏ธ ๋ฐฐ์—ด ๊ณ ์ฐจ ํ•จ์ˆ˜

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

โœ๏ธ Array.prototype.sort

sort ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ •๋ ฌ. ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์—ฌ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜. sort ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์š”์†Œ๋ฅผ ์ •๋ ฌ

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

// ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
fruits.sort();

// sort ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•œ๋‹ค.
console.log(fruits); // ['Apple', 'Banana', 'Orange']

ํ•œ๊ธ€ ๋ฌธ์ž์—ด์ธ ์š”์†Œ๋„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
sort ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•˜๋ฏ€๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด sort๋ฅผ ์‚ฌ์šฉํ•œ๋’ค revese ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ž.

์ˆซ์ž ์š”์†Œ๋ฅผ ์ •๋ ฌํ•  ๋–„๋Š” sort ๋ฉ”์„œ๋“œ์— ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ
ํ•ด์•ผ ํ•œ๋‹ค.

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

// ์ˆซ์ž ๋ฐฐ์—ด์˜ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ๋น„๊ต ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด a๋ฅผ ์šฐ์„ ํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค
points.sort((a,b) => a - b);
console.log(points); // [1,2,4,10,25,40,100]

// ์ˆซ์ž ๋ฐฐ์—ด์—์„œ ์ตœ์†Œ/์ตœ๋Œ€๊ฐ’ ์ทจ๋“
console.log(points[0], points[points.length - 1]); // 1, 100

// ์ˆซ์ž ๋ฐฐ์—ด์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ, ๋น„๊ต ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด b๋ฅผ ์šฐ์„ ํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค.
points.sort((a,b) => b - a);
console.log(points); // [100,40,24,10,5,2,1]

๊ฐ์ฒด๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๋Š” ์˜ˆ

const todos = [
  { id: 4, content: 'Javascript' },
  { id: 1, content: 'HTML' },
  { id: 2, content: 'CSS' }
];

// ๋น„๊ต ํ•จ์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ key๋Š” ํ”„๋กœํผํ‹ฐ ํ‚ค๋‹ค.
function compare(key) {
  // ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ - ์‚ฐ์ˆ  ์—ฐ์‚ฐ์œผ๋กœ ๋น„๊ตํ•˜๋ฉด NaN์ด ๋‚˜์˜ค๋ฏ€๋กœ ๋น„๊ต ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  // ๋น„๊ต ํ•จ์ˆ˜๋Š” ์–‘์ˆ˜/์Œ์ˆ˜/0์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋˜๋ฏ€๋กœ - ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋Œ€์‹  ๋น„๊ต ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค)
  return(a,b) => (a[key] > b[key] ? 1 : (a[key] < b[key] ? -1 : 0));
  
// id๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
  todos.sort(compare('id'));

// content๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
  todos.sort(compare('content');y

โœ๏ธ Array.prototype.forEach

forEach ๋ฉ”์„œ๋“œ๋Š” for ๋ฌธ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜๋‹ค.

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

// forEach ๋ฉ”์„œ๋“œ๋Š” numbers ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ๋‹ค.
numbers.forEach(item => pows.push(item ** 2));
console.log(pows); // [1,4,9]

โœ๏ธ Array.prototype.map

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

const numbers = [1,4,9];

// map ๋ฉ”์„œ๋“œ๋Š” numbers ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ๋‹ค.
// ๊ทธ๋ฆฌ๊ณ  ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const roots = numbers.map(item => Math.sqrt(item));
// ์œ„ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
// const roots = numbers.map(Math.sqrt);

// map ๋ฉ”์„œ๋“œ๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
console.log(roots); // [1,2,3]
// map ๋ฉ”์„œ๋“œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.
console.log(numbers); // [1,4,9]

forEach ๋ฉ”์„œ๋“œ๋Š” ์–ธ์ œ๋‚˜ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , map ๋ฉ”์„œ๋“œ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.
forEach ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์ฐจ ํ•จ์ˆ˜์ด๊ณ , map ๋ฉ”์„œ๋“œ๋Š” ์š”์†Œ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์ฐจ ํ•จ์ˆ˜๋‹ค.
map ๋งค์„œ๋“œ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’์€ map ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ length ํ”„๋กœํผํ‹ฐ ๊ฐ’๊ณผ ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•œ๋‹ค. ์ฆ‰, map ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด๊ณผ map ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ ๋ฐฐ์—ด์€ 1:1 ๋งคํ•‘ํ•œ๋‹ค

โœ๏ธ Array.prototype.filter

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

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

// filter ๋ฉ”์„œ๋“œ๋Š” numbers ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ํ˜ธ์ถœํ•œ๋‹ค.
// ๊ทธ๋ฆฌ๊ณ  ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ๋‹ค์Œ์˜ ๊ฒฝ์šฐ numbers ๋ฐฐ์—ด์—์„œ ํ™€์ˆ˜์ธ ์š”์†Œ๋งŒ ํ•„ํ„ฐ๋งํ•œ๋‹ค.(1์€ true๋กœ ํ‰๊ฐ€๋œ๋‹ค)
const odds = numbers.filter(item => item % 2);
console.log(odds); // [1,3,5]

โœ๏ธ Array.prototype.reduce

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

reduce ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

โœ๏ธ reduce ํ™œ์šฉํ•˜๊ธฐ

ํ‰๊ท  ๊ตฌํ•˜๊ธฐ

const values = [1,2,3,4,5,6];

const average = values.reduce((acc, cur, i, { length }) => {
  // ๋งˆ์ง€๋ง‰ ์ˆœํšŒ๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ˆ„์ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ์ˆœํšŒ๋ฉด ๋ˆ„์ ๊ฐ’์œผ๋กœ ํ‰๊ท ์„ ๊ตฌํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  return i === length - 1 ? (acc + cur) / length : acc + cur;
}, 0);

console.log(average); // 3.5

์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ

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

const max = values.reduce((acc,cur) => (acc > cur ? acc : cur), 0);
console.log(max); // 5

์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•  ๋–„๋Š” reduce ๋ฉ”์„œ๋“œ๋ณด๋‹ค Math.max ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋” ์ง๊ด€์ 

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

const max = Math.max(...values);
// var max = Math.max.apply(null, values);
console.log(max); // 5

์š”์†Œ์˜ ์ค‘๋ณต ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ

const fruits = ['banana', 'apple', 'orange', 'orange', 'apple'];

const count = fruits.reduce((acc, cur) => {
  // ์ฒซ ๋ฒˆ์จฐ ์ˆœํšŒ ์‹œ acc๋Š” ์ดˆ๊ธฐ๊ฐ’์ธ {}์ด๊ณ  cur์€ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์ธ 'banana'๋‹ค.
  // ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋นˆ ๊ฐ์ฒด์— ์š”์†Œ๊ฐ’์ธ cur์„ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ, ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค.
  // ๋งŒ์•ฝ ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด undefined์ด๋ฉด ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค
  acc[cur] = (acc[cur] || 0) + 1;
  return acc;
}, {});

// ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ์ด 5๋ฒˆ ํ˜ธ์ถœ๋˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
console.log(count); { banana: 1, apple: 2, orange: 2}

์ค‘์ฒฉ ๋ฐฐ์—ด ํ‰ํƒ„ํ™”

const values = [1, [2,3],4,[5,6]];
const flatten = values.reduce((acc, cur) => acc.concat(cur), []);

console.log(flatten); [1,2,3,4,5,6]

flat ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋” ์ง๊ด€์ ์ด๋‹ค.

์ค‘๋ณต ์š”์†Œ ์ œ๊ฑฐ

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

const result = values.reduce(
  (unique, val, i, _values) => 
  // ํ˜„์žฌ ์ˆœํšŒ ์ค‘์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค i๊ฐ€ val์˜ ์ธ๋ฐ๊ธ‹์™€ ๊ฐ™๋‹ค๋ฉด val์€ ์ฒ˜์Œ ์ˆœํšŒํ•˜๋Š” ์š”์†Œ๋‹ค.
  // ํ˜„์žฌ ์ˆœํšŒ ์ค‘์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค i๊ฐ€ val์˜ ์ธ๋ฑ์Šค์™€ ๋‹ค๋ฅด๋‹ค๋ฉด val์€ ์ค‘๋ณต๋œ ์š”์†Œ๋‹ค.
  // ์ฒ˜์Œ ์ˆœํšŒํ•˜๋Š” ์š”์†Œ๋งŒ ์ดˆ๊ธฐ๊ฐ’ []๊ฐ€ ์ „๋‹ฌ๋œ unique ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์ค‘๋ณต๋œ ์š”์†Œ๋Š” ์ œ๊ฑฐ๋œ๋‹ค.
  _values.indexOf(val) === i ? [...unique, val] : unique,
  []
);

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

reduce๋ณด๋‹ค filter ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋” ์ง๊ด€์ 
์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์ธ Set์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค ์ด ๋ฐฉ๋ฒ• ์ถ”์ฒœ

reduce ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋–„๋Š” ์–ธ์ œ๋‚˜ ์ดˆ๊ธฐ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค.

โœ๏ธ Array.prototype.some

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

// ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘ 10๋ณด๋‹ค ํฐ ์š”์†Œ๊ฐ€ 1๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
[5,10,15].some(item => item > 10); // true

// ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘ 0๋ณด๋‹ค ์ž‘์€ ์š”์†Œ๊ฐ€ 1๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
[5,10,15].some(item => item < 0); // false

// ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘ 'banana'๊ฐ€ 1๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
['apple', 'banana', 'mango'].some(item => item === 'banana'); // true

// some ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ์–ธ์ œ๋‚˜ false
[].some(item => item > 3); // false

โœ๏ธ Array.prototype.every

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

// ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ 3๋ณด๋‹ค ํฐ์ง€ ํ™•์ธ
[5,10,15].every(item => item > 3); // true

// ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ 10๋ณด๋‹ค ํฐ์ง€ ํ™•์ธ
[5,10,15].every(item => item > 10); // false

// every ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ ์–ธ์ œ๋‚˜ true
[].every(item => item > 3); // true

โœ๏ธ Array.prototype.find

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

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

// id๊ฐ€ 2์ธ ์ฒซ ๋ฒˆ์จฐ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œใ„ท. find ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
users.find(user => user.id === 2); {id: 2, name: 'Kim'}
  

โœ๏ธ Array.prototype.findIndex

ES6์—์„œ ๋„์ž…๋œ findIndex ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถ”๋ž—์—ฌ ๋ฐ˜ํ™˜๊ฐ‘์‹ฑ true์ธ ์ฒซ ๋ฒˆ์จฐ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์ธ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜

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


// id๊ฐ€ 2์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•œ๋‹ค.
users.findIndex(user => user.id === 2); // 1

// name์ด 'Park'์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•œ๋‹ค.
users.findIndex(user => user.name === 'Park'); // 3

// ์œ„์™€ ๊ฐ™์ด ํ”„๋กœํผํ‹ฐ ํ‚ค์™€ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
function predicate(key, value) {
  // key์™€ value๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํด๋กœ์ €๋ฅผ ๋ฐ˜ํ™˜
  return item => item[key] === value;
}

// id๊ฐ€ 2์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•œ๋‹ค.
users.finedIndex(predicate('id', 2)); // 1

// name์ด 'Park'์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•œ๋‹ค.
users.findIndeX(predicate('name', 'Park')); // 3

โœ๏ธ Array.prototype.flatMap

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

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

// map๊ณผ flat์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰
arr.map(x => x.split('')).flat();
// ['h', 'e','l','l','o','w','o','r','l','d']

// flatMap์€ map์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ํ‰ํƒ„ํ™”
arr.flatMap(x => x.split(''));
// ['h', 'e','l','l','o','w','o','r','l','d']

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

profile
FrontEnd Developer

0๊ฐœ์˜ ๋Œ“๊ธ€