티스토리 뷰

Programming/JavaScript

[Javascript] ES6 문법

MyNotepad 2023. 1. 10. 00:40

* filter, map, reduce, forEach, every, some, find 등이 있다(ES5이상부터 사용가능)

 

1. filter

주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환

let list = [
  { fruit: '사과', snack: '꼬북칩', food: '피자' },
  { fruit: '오렌지', snack: '새우깡', food: '햄버거' },
  { fruit: '사과', snack: '아우터', food: '쌀국수' }
]

// ※fruit가 '사과'인 data 출력

// 1. 기존 for문
let filteredArray = []
for (let i = 0; i < list.length; i++) {
  if (list[i].fruit === '사과') {
    filteredArray.push(list[i])
  }
}
// 2. filter 사용
let filteredArray = list.filter(function (value, index, arr) {
	return list.fruit === '사과'
})
// 3. filter와 화살표함수
let filteredArray = list.filter((data) => {
	return data.fruit === '사과'
})

 

2. map

배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환

let list = [
  { fruit: '사과', snack: '꼬북칩', food: '피자' },
  { fruit: '오렌지', snack: '새우깡', food: '햄버거' },
  { fruit: '사과', snack: '아우터', food: '쌀국수' }
]

// fruit은 모두 품절로,
// snack의 꼬북칩은 '꼬북칩(인절미)'로,
// food는 문장 끝에 '맛있다' 추가하기
// customer 추가하기

// 1. 기존 for문
let map = []
for (let i = 0; i < list.length; i++) {
  list[i].fruit = '품절'
  if (list[i].snack === '꼬북칩') {
    list[i].snack = '꼬북칩(인절미)'
  }
  list[i].food = list[i].food + '맛있다'
	list[i].customer = ''
  map.push(list[i])
}
// 2. map
let map = result.map(function(index) {
	index['fruit'] = '품절'
	index['snack'] = index['snack'] === '꼬북칩' ? '꼬북칩(인절미)' : index['snack']
	index['food'] = index['food'] + '맛있다'
	index['customer'] = ''
	return index
})
// 3. map과 화살표함수
let map = result.map(index => {
	index['fruit'] = '품절'
	index['snack'] = index['snack'] === '꼬북칩' ? '꼬북칩(인절미)' : index['snack']
	index['food'] = index['food'] + '맛있다'
	index['customer'] = ''
	return index
})

 

3. reduce

배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환

let list = [
  { fruit: '사과', snack: '꼬북칩', food: '피자', salesRate: 350 },
  { fruit: '오렌지', snack: '새우깡', food: '햄버거', salesRate: 189 },
  { fruit: '사과', snack: '아우터', food: '쌀국수', salesRate: 756 }
]
// salesRate 최대값 가진 데이터 출력

// 1. for문
let reduce = []
let max = list[0].salesRate
for (let i=0; i < list.length; i++) {
	if (list[i].salesRate > max) {
    	max = list[i]
        reduce = list[i]
    }
}
// 2. reduce
var reduce = list.reduce(function (pre, value) {
    return pre.salesRate > value.salesRate ? pre : value
})

// 2. reduce와 화살표함수
let reduce = list.reduce((a, b) => {
	return a.salesRate > b.salesRate ? a : b
})

 

4. forEach

배열의 반복문으로 처음부터 마지막 요소까지 반복하여 실행

let list = [
  { fruit: '사과', snack: '꼬북칩', food: '피자', salesRate: 350 },
  { fruit: '오렌지', snack: '새우깡', food: '햄버거', salesRate: 189 },
  { fruit: '사과', snack: '아우터', food: '쌀국수', salesRate: 756 }
]
// 똑같은 list 만들기

// 1. for문
let forEach = []
for (let i=0; i<list.length; i++) {
	forEach.push(list[i])
}

// 2. forEach
let forEach = []
list.forEach(function(ele,index) {
	forEach.push(ele)
})

// 3. forEach와 화살표함수
let forEach = []
list.forEach((ele, index) => {
	forEach.push(ele)
})

 

5. every

성능을 위해 조건을 만족하지 않는 값이 발견되면 return false와 함께 순회가 중단

6. some

성능을 위해 조건을 만족하는 값이 발견되면 return true와 함께 순회가 중단

let list = [
  { fruit: '사과', snack: '꼬북칩', food: '피자', count: 2 },
  { fruit: '오렌지', snack: '새우깡', food: '햄버거', count: 3 },
  { fruit: '사과', snack: '아우터', food: '쌀국수', count: 15 }
]

/*
every
1. 모든 요소가 조건 충족시 return true
2. 불충족 발견시 남은요소 체크하지 않고 return false
*/
// 짝수가 아닌값이 있는지 검증...
let every = list.every((ele, index) => {
	return ele.count%2 === 0
})
// => 오렌지의 count:3이 홀수이므로 return false

/*
some
1. 1개의 요소만 충족해도 return true
2. 충족 요소 발견시 남은요소 체크하지 않고 return true
*/
// 짝수인 값이 있는지 검증...
let some = list.some(ele => {
	return ele.count%2 === 0
})
// => 사과의 count:2가 짝수이므로 return true

 

7. find

주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환(else : undefined 반환)

let list = [
  { fruit: '사과', count: 2 },
  { fruit: '오렌지', count: 3 },
  { fruit: '사과', count: 0 },
  { fruit: '귤', count: 0 }
]

// 다팔린 fruit찾기
let find = list.find(element => {
	return element.count === 0
})
// { fruit: '사과', count: 0 } => 조건 충족하는 첫번째 요소만 반환

 

 

 

 

'Programming > JavaScript' 카테고리의 다른 글

[Javascript] True / False 조건부 삼항 연산자(물음표)  (0) 2023.01.10
[Javascript] Empty Check  (0) 2023.01.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함