๐Ÿ“ฆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด(Array) ์™„์ „ ์ •๋ฆฌ

๐Ÿงพ ๋ฐฐ์—ด์ด๋ž€?

๋ฐฐ์—ด(Array)์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์—ด์€ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let fruits = ['์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', 'ํฌ๋„'];

๐Ÿฑ ์‹ค์ƒํ™œ ๋น„์œ : ๋ฐฐ์—ด์€ ์‹ํŒ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์นธ์— ๋‹ค์–‘ํ•œ ์Œ์‹์„ ๋‹ด๋“ฏ, ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ” ๋ฐฐ์—ด์„ ์ˆœํšŒ(๋ฐ˜๋ณต)ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐฉ๋ฒ• ์„ค๋ช… ์˜ˆ์‹œ
for ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ์ „ํ†ต์ ์ธ ๋ฐ˜๋ณต for(let i = 0; i < arr.length; i++)
for...of ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋ƒ„ for (let item of arr)
forEach() ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ˜๋ณต arr.forEach((item) => console.log(item))
const fruits = ['์‚ฌ๊ณผ', '๋ฐฐ', '๋”ธ๊ธฐ'];

for (let i = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
}

for (let fruit of fruits) {
  console.log(fruit);
}

fruits.forEach(fruit => console.log(fruit));


๐Ÿ› ๏ธ ๋ฐฐ์—ด ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ

๋ฉ”์„œ๋“œ ์„ค๋ช… ์˜ˆ์‹œ
join(separator) ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์น˜๊ธฐ ['a', 'b'].join('-') โ†’ 'a-b'
includes(value) ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ [1,2,3].includes(2) โ†’ true
indexOf() / lastIndexOf() ํŠน์ • ๊ฐ’์˜ ์œ„์น˜ ์ฐพ๊ธฐ [1,2,3].indexOf(3) โ†’ 2
slice(start, end) ๋ฐฐ์—ด์˜ ์ผ๋ถ€ ์ถ”์ถœ (์›๋ณธ ์œ ์ง€) arr.slice(1, 3)
splice(start, deleteCount, ...items) ์š”์†Œ ์‚ญ์ œ/์ถ”๊ฐ€ (์›๋ณธ ๋ณ€๊ฒฝ) arr.splice(1, 1, '์ƒˆ๊ฐ’')
concat() ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ arr1.concat(arr2)
reverse() ๋ฐฐ์—ด ์ˆœ์„œ ๋’ค์ง‘๊ธฐ (์›๋ณธ ๋ณ€๊ฒฝ) arr.reverse()
toSorted() / toReversed() ES2023, ์ •๋ ฌ/๋’ค์ง‘๊ธฐ (์›๋ณธ ๋ถˆ๋ณ€) arr.toSorted()

๐ŸŽฏ ๋ฐฐ์—ด ๊ณ ์ฐจ ํ•จ์ˆ˜(Higher-Order Functions)

๊ณ ์ฐจ ํ•จ์ˆ˜๋ž€, "๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜"๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ๋Œ€ํ‘œ์ ์ธ ๊ณ ์ฐจ ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŽ์ด ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ณ ์ฐจ ํ•จ์ˆ˜

๋ฉ”์„œ๋“œ ์„ค๋ช… ์˜ˆ์‹œ
forEach() ๋ฐ˜๋ณต ์ˆ˜ํ–‰ (return ์—†์Œ) arr.forEach(x => console.log(x))
map() ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋ณ€ํ˜•ํ•˜์—ฌ ์ƒˆ ๋ฐฐ์—ด ์ƒ์„ฑ arr.map(x => x * 2)
filter() ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋งŒ ์ถ”์ถœ arr.filter(x => x > 0)
reduce() ๋ˆ„์  ๊ณ„์‚ฐ (์ดํ•ฉ ๋“ฑ) arr.reduce((a,b) => a + b)
find() ์กฐ๊ฑด์— ๋งž๋Š” ์ฒซ ์š”์†Œ ๋ฐ˜ํ™˜ arr.find(x => x > 5)
some() / every() ์ผ๋ถ€/๋ชจ๋‘ ์กฐ๊ฑด ์ถฉ์กฑ ์—ฌ๋ถ€ ํ™•์ธ arr.some(x => x > 0)
sort() ์š”์†Œ ์ •๋ ฌ (์›๋ณธ ๋ณ€๊ฒฝ ์ฃผ์˜) arr.sort((a,b) => a-b)

๐Ÿงช ์‹ค์Šต ์˜ˆ์ œ

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

// map
const doubled = numbers.map(num => num * 2); // [2, 4, 6, 8, 10]

// filter
const even = numbers.filter(num => num % 2 === 0); // [2, 4]

// reduce
const sum = numbers.reduce((acc, cur) => acc + cur, 0); // 15

// some / every
const hasNegative = numbers.some(num => num < 0); // false
const allPositive = numbers.every(num => num > 0); // true