๐Ÿ“ŒLanguage/JavaScript

TIL) forEach, for of, for in, filter, reduce, map ์ •๋ฆฌ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

hellohailie 2022. 5. 27. 16:38

 

forEach ํ•จ์ˆ˜์™€ for of // ๋ฐฐ์—ด์—์„œ ์“ด๋‹ค. 

 

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

numbers.forEach(function(el) {
	console.log(el)
})

// forEach์™€ for of ์—ญํ• ์€ ๊ฐ™๋‹ค

for (let el of numbers) {
	console.log(el);
}

//์ถœ๋ ฅ
1
2
3
4
5
6
7

 

์š”์ฆ˜์—๋Š” forEach๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

๋” ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•œ for of๊ฐ€ ์ƒ๊ฒผ์œผ๋‹ˆ๊นŒ!!

 

 


for in // ๊ฐ์ฒด์—์„œ ์“ฐ์ธ๋‹ค. ๊ฐ์ฒด ์•ˆ์˜ ๋ชจ๋“  ํ‚ค๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 

const hailie = {
	name: 'hailie',
    age:2,
    city:'hawaii'
}

for(key in hailie) {
	console.log(value);
}

// ์ถœ๋ ฅ๊ฐ’
name
age
city

 

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

 

const square = (x) => {
	return x * x;
}

const square = x => {
	return x * x;
}
// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ๋ผ๋ฉด ๊ด„ํ˜ธ ๊ตณ์ด ์•ˆ์จ๋„ ๋œ๋‹ค. ์ผํ„ฐ์˜ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋งž๋Š” ๋ฐฉ๋ฒ•์„ ์“ฐ๋ฉด ๋œ๋‹ค. 



const sum = (x, y) => {
	return x + y;
}

const rollDie = () => {
	return Math.floor(Math.random() * 6) + 1
}
// ์ „๋‹ฌ๋  ์ธ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ๋นˆ์นธ์œผ๋กœ ๋‘ฌ๋„ ๋œ๋‹ค!

 


 

filter // ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค. // ๊ธฐ์กด ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘์—์„œ ์ •์ˆ˜๊ธฐ์ฒ˜๋Ÿผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์š”์†Œ๋งŒ ๋ฝ‘์•„๋‚ด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค. 

const numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

numbers.filter(n => {
	return n < 10
})

// ์ถœ๋ ฅ๊ฐ’: [1, 2, 3, 4, 5, 6, 7, 8, 9]
// numbers๋Š” [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 

// ์•„ํ•˜! filter๋Š” ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š”๊ตฌ๋‚˜!

 

ํ‰์ ์ด ๊ฐ€์žฅ ๋†’์€ ์•„์ดํ…œ, ์˜ค๋ž˜๋œ ์•„์ดํ…œ, ์ƒˆ๋กœ์šด ์•„์ดํ…œ ๋“ฑ์„ ํ•„ํ„ฐ๋งํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

const goodMovies = movies.filter(m => m.score > 80)
const goodTitles = goodMovies.map(m => m.title)

// ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. 

movies.filter(m => m.score > 80).map(m => m.year > 2000)

 

 


reduce() ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ, ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ ์‘์ถ•(reduce)ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

 

๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ๋งž๊ฒŒ ํ•˜๋‚˜๋กœ ์‘์ถ•์‹œํ‚จ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

๋ˆ„์ , ํ˜„์žฌ, ์ดˆ๊ธฐ๊ฐ’์ด ์ค‘์š”ํ•˜๋‹ค!

acc: accumulation ์‘์ถ•๋œ ๊ฐ’

cur: current ํ˜„์žฌ ๋ฐฐ์—ด ์š”์†Œ

 

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

arr.reduce((arr,cur) => {return acc + cur});

 

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

arr.reduce((acc,cur) => {

if(cur % 2 === 0) {

return acc + cur

} else {

return acc

}

},0)

 

  1. ์ดˆ๊ธฐ๊ฐ’์ด ์—†์„๋•Œ

 

acc๋Š” ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ

cur๋Š” ๋ฐฐ์—ด์˜ ๋‘๋ฒˆ์งธ ์š”์†Œ

 

๋งˆ์ง€๋ง‰์—๋Š” ์ตœ์ข…์ ์ธ acc๊ฐ’์ด ๋ฆฌํ„ด๋˜๋Š”๊ฑฐ๋‹ค. 

 

 

    2. ์ดˆ๊ธฐ๊ฐ’์ด ์žˆ์„๋•Œ

 

์ดˆ๊ธฐ๊ฐ’์ด acc๊ฐ€ ๋˜๋Š”๊ฑฐ๊ณ ,

cur์€ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๋˜๋Š”๊ฑฐ๋‹ค. 

 

์ดˆ๊ธฐ๊ฐ’ ์žˆ์œผ๋ฉด ๋ฐ˜๋ณตํšŸ์ˆ˜๊ฐ€ ์—†์„๋•Œ๋ณด๋‹ค ํ•œ๋ฒˆ ๋” ๋งŽ๋‹ค. 

 

const prices = [1000, 1500, 2000, 8000, 12000];

let total = 0;
for (let price of prices) {
	total += price
}
console.log(total);
// ๊ฒฐ๊ณผ๊ฐ’: 24500

// ๐Ÿ‘‡์•„๋ž˜ ์ฝ”๋“œ๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. 

const total = prices.reduce((total, price) => {
	return total + price
})
console.log(total);
// ๊ฒฐ๊ณผ๊ฐ’: 24500

// ๐Ÿ‘‡์•„๋ž˜ ์ฝ”๋“œ๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

const total = prices.reduce((total, price) => total + price)

 

 


map() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

// ๋ฐฐ์—ด ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ์— ์›ํ•˜๋Š” ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ค€๋‹ค. 

 

const array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]