Frontend๐ŸŽจ/JavaScript๐Ÿ’›, TypeScript๐Ÿ’™

[JavaScript, TypeScript] map(), filter(), some()๋ฉ”์†Œ๋“œ

JanuDev 2024. 12. 21. 21:40

์˜ค๋Š˜๋„ ์‹ค๋ฌด์—์„œ ๋””์ง€๊ฒŒ ๋งŽ์ด ์“ฐ๋Š” ์„ธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

์…‹ ๋‹ค ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ JavaScript, TypeScript๋ฉ”์†Œ๋“œ์ด๋ฏ€๋กœ ์ฐฌ์ฐฌํžˆ ์‚ดํŽด๋ณด๋„๋ก ํ•œ๋‹ค!

์ฃผ์˜(?)์‚ฌํ•ญ : ๋ฐฐ์—ด ๋‚ด ๋ฌธ์ž์—ด์— ์›๋ž˜ ''๋ฅผ ์”Œ์šฐ๋Š”๊ฒŒ ์ •์„์ด์ง€๋งŒ,,, ๊ท€์ฐฎ์•„์„œ ๊ฑ ์ƒ๋žตํ–ˆ๋‹คใ…‹

1. map() ๋ฉ”์†Œ๋“œ

๊ธฐ๋Šฅ : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.

๊ฐ๊ฐ์˜ ์š”์†Œ์— ๋Œ€ํ•ด ํ•œ๋ฒˆ์”ฉ ์ˆœํšŒํ•˜๋ฉฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์ ์šฉ → ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

map๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์„ ์ƒˆ๋กœ์ด ๊ตฌ์„ฑํ•ด์„œ ๋˜‘๊ฐ™์€ ๊ธธ์ด๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

[์–ด๋– ํ•œ ๋ฐฐ์—ด] + ๋‚ด๊ฐ€ ์„ค์ •ํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ () = [๋‚ด๊ฐ€ ์ƒˆ๋กœ ๋งŒ๋“  ๋ฐฐ์—ด]

์ •ํ™•ํ•˜์ง€ ์•Š์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋‰˜์•™์Šค์˜ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฑ‰์–ด๋‚ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

Vue3.0 js์—์„  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฑ‰์–ด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์–•์€ ๋ณต์‚ฌ๊ฐ€ ๋œ๋‹ค โžก๏ธ readonly์ƒํƒœ์—์„œ ๋ฒ—์–ด๋‚˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค!

map()ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๊ฐ€๊ณตํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ ์šฉํ•œ ์ƒˆ๋กœ์šด ์š”์†Œ๋กœ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
const oldArr = [A,B,C,D];

const newArr = oldArr.map(item => item.toLowerCase()); // [a, b, c, d]๋ฐ˜ํ™˜

 

map ํ•จ์ˆ˜์˜ ๊ผด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฒผ๋‹ค.

array.map((item, index, array) => {
    // ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด์šฉ
});

arr : mapํ•จ์ˆ˜๋ฅผ ์ ์šฉ์‹œํ‚ฌ ๋ฐฐ์—ด

item :  ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๋ฐฐ์—ด์˜ ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜ (oldArr์„ ์˜ˆ์‹œ๋กœ ๋“ค์ž๋ฉด A, B, C, D)

index(์„ ํƒ์‚ฌํ•ญ) : ํ˜„์žฌ ์ฒ˜๋ฆฌ์ค‘์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค

array(์„ ํƒ์‚ฌํ•ญ) : map๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์›๋ณธ ๋ฐฐ์—ด ์ž์ฒด

 

2. filter() ๋ฉ”์†Œ๋“œ

๊ธฐ๋Šฅ : ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋งŒ ๊ฑธ๋Ÿฌ๋‚ด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

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

filter()ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋“ค ์ค‘์—์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ๋“ค๋งŒ ํ•„ํ„ฐ๋ง๋œ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
const numArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function isEven(value:number){ // ์ง์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฉ”์†Œ๋“œ ์„ค์ •
	return value % 2 === 0; 
}

const result = numArr.filter(isEven); // ์ง์ˆ˜ [2, 4, 6, 8, 10] ๋ฐ˜ํ™˜

 

filter๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

array.filter((item, index, array) => {
	// ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด์šฉ
}

item : ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ธ ๋ฐฐ์—ด์˜ ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜(์œ„ ์˜ˆ์‹œ๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด, ์ˆซ์ž ๋ฐฐ์—ด๋“ค 1, 2, 3,...)

index(์„ ํƒ ์‚ฌํ•ญ) : ํ˜„์žฌ ์ฒ˜๋ฆฌ์ค‘์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค

array(์„ ํƒ ์‚ฌํ•ญ) : filter ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์›๋ณธ ๋ฐฐ์—ด ์ž์ฒด

 

3. some() ๋ฉ”์†Œ๋“œ

๊ธฐ๋Šฅ : ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ

์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด true, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฐฐ์—ด ๋‚ด ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

some()๋ฉ”์†Œ๋“œ๋Š” ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜์—ฌ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š”์ง€ ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
const arr = [a, b, c, d, e];

function searchLetter(value){ // ๋ฐฐ์—ด์— a๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์†Œ๋“œ
	return value === 'a';
}

const hasA = arr.some(searchLetter); // true ๋ฐ˜ํ™˜

 

some ๋ฉ”์†Œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

array.some((item, index, array) => {
	// ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด์šฉ
})

item : ์ˆœํšŒ๋ฅผ ๋Œ ๋ฐฐ์—ด์˜ ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜

index(์„ ํƒ ์‚ฌํ•ญ) : ์ˆœํšŒ๋ฅผ ๋Œ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค

array (์„ ํƒ ์‚ฌํ•ญ) : ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์›๋ณธ ๋ฐฐ์—ด ์ž์ฒด

 

+ ์ฐธ๊ณ ์‚ฌํ•ญ

(1) index์™€ array๋Š” ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜์ด๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•œ๋‹ค!

(2) ์„ธ ๋ฉ”์†Œ๋“œ ๋ชจ๋‘ ์›๋ณธ ๋ฐฐ์—ด์„ ์ˆ˜์ •ํ•˜์ง„ ์•Š์œผ๋ฉฐ, ์›๋ณธ ๋ฐฐ์—ด์€ ๋ถˆ๋ณ€์ด๋‹ค.

 

[์ถœ์ฒ˜] https://codingeverybody.kr/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-map-%ED%95%A8%EC%88%98/

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ map() ํ•จ์ˆ˜ – ๊ฐœ๋… ์ •๋ฆฌ ๋ฐ ์‚ฌ์šฉ ์˜ˆ์ œ - ์ฝ”๋”ฉ์—๋ธŒ๋ฆฌ๋ฐ”๋””

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

codingeverybody.kr

https://codingeverybody.kr/%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8-filter-%ed%95%a8%ec%88%98/

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ filter() ํ•จ์ˆ˜ – ๊ฐœ๋… ์ •๋ฆฌ ๋ฐ ์‚ฌ์šฉ ์˜ˆ์ œ - ์ฝ”๋”ฉ์—๋ธŒ๋ฆฌ๋ฐ”๋””

filter() ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ•„ํ„ฐ๋งํ•˜๊ณ  ํ•„ํ„ฐ๋ง๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์š”์†Œ ์ค‘๋ณต ์ œ๊ฑฐ๋‚˜ ๋‹ค์ค‘ ์กฐ๊ฑด, 2์ฐจ์› ๋ฐฐ์—ด ํ•„ํ„ฐ

codingeverybody.kr

 

https://codingeverybody.kr/%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8-some-%ed%95%a8%ec%88%98/

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ some() ํ•จ์ˆ˜ – ๋ฐฐ์—ด์˜ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ - ์ฝ”๋”ฉ์—๋ธŒ๋ฆฌ๋ฐ”๋””

๋ฐฐ์—ด์˜ some() ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์š”์†Œ๋ผ๋„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

codingeverybody.kr