728x90
반응형
JavaScript [7] - 배열 메서드 심화
Array Helper Methods
- 배열을 순회하며 특정 로직을 수행하는 메서드
- 메서드 호출 시 인자로 callback 함수를 받는 것이 특징
(callback 함수 : 다른 함수의 인자로 전달되는 함수)
// 콜백 함수 예시
const numbers = [1, 2, 3]
numbers.forEach(function (num) {
console.log(num**2)
})
// 1
// 4
// 9
const callBackFunction = function (num) {
console.log(num**2)
}
numbers.forEach(callBackFunction)
// 1
// 4
// 9

forEach
- array.forEach(callback(element [, index [, array]]))
- 3가지 매개변수로 구성
- element : 배열의 요소
- index : 배열 요소의 인덱스
- array : 배열 자체
- 반환 값(return) 없음
// 예시
array.forEach(function (element, index, array) {
// do something
}
// 일단 사용
const colors = ['red', 'blue', 'green']
printFunc = function (color) {
console.log(color)
}
colors.forEach(printFunc)
// red
// blue
// green
// 함수 정의를 인자로 넣어보기
colors.forEach(function (color) {
console.log(color)
})
// 화살표 함수 적용하기
colors.forEach((color) => {
return console.log(color)
})
map
- array.map(callback(element[, index [, array]]))
- 배열의 각 요소에 대해 콜백 함수를 한번씩 실행
- 콜백 함수의 반환 값을 요소로 하는 새로운 배열 반환
- 기존 배열 전체를 다른 형태로 바꿀 때 유용
- forEach + return 이라 생각.
Array.map(function (element, index, array) {
// do something
})
const numbers = [1, 2, 3]
//함수 정의 (표현식)
const doubleFunc = function (number) {
return number * 2
}
// 함수를 다른 함수의 인자로 넣기(콜백 함수)
const doubledNumbers = numbers.map(doubleFunc)
console.log(doubledNumbers) // [2, 4, 6]
// 함수의 정의를 인자로 넣어보기
const doubledNumbers2 = numbers.map(function (number) {
return number * 2
})
console.log(doubledNumbers2) // [2, 4, 6]
// 화살표 함수 적용하기
const doubledNumbers3 = numbers.map((number) => {
return number * 2
})
console.log(doubledNumbers3) // [2, 4, 6]
filter
- array.filter(callback(element[, index [, array]]))
- 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
- 콜백 함수의 반환 값이 true인 요소들만 모아서 새로운 배열 반환
- 기존 배열의 요소들을 필터링할 때 유용
const products = [
{ name: 'cucumber', type: 'vegerable'},
{ name: 'banana', type: 'fruit'},
{ name: 'carrot', type:'vegetable'},
{ name: 'apple', type: 'fruit'},
]
// 함수 정의하고
const fruitFilter = function (fruitFilter) {
return products.type === 'fruit'
}
// 콜백으로 넘기고
const fruits = products.filter(fruitFilter)
console.log(fruits)
// [ { name: 'banana', type: 'fruit'}, { name: 'apple', type: 'fruit'}, { name: 'carrot', type:'vegetable' } ]
// 함수 정의를 인자로 넣어보기
const fruits = products.filter(function (product) {
return product.type === 'fruit'
}]
console.log(fruits)
// 화살표 함수 적용하기
const fruits = products.filter((product) => {
return product.type === 'fruit'
}]
console.log(fruits)
find
- array.find(callback(element[, index [, array]]))
- 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
- 콜백 함수의 반환값이 true면, 조건을 만족하는 첫번째 요소를 반환
- 찾는 값이 배열에 없으면 undefined 반환
const avengers = [
{ name: 'Tony stark', age: 45 },
{ name: 'Steve Rogers', age: 32 },
{ name: 'Thor', age: 40 },
]
const avenger = avengers.find(function(avenger) {
return avenger.name === 'Tony stark'
})
console.log(avenger) // { name: 'Tony stark', age: 45 }
// 화살표 함수 적용
const avenger = avengers.find((avenger) => {
return avenger.name === 'Tony stark'
})
console.log(avenger) // { name: 'Tony stark', age: 45}
some
- array.some(callback(element[, index [, array]]))
- 배열의 요소 중 하나라도 주어진 판별 함수를 통과하면 true 반환
- 모든 요소가 통과하지 못하면 거짓 반환
- 빈 배열은 항상 false 반환
const arr = [1, 2, 3, 4, 5]
const result = arr.some((elem) => {
return elem % 2 === 0
})
//true
every
- array.every(callback(element[, index [, array]]))
- 배열의 모든 요소가 주어진 판별 함수를 통과하면 true 반환
- 하나의 요소라도 통과하지 못하면 false 반환
- 빈 배열은 항상 true 반환
const arr = [1, 2, 3, 4 ,5]
const result = arr.every((elem) => {
return elem % 2 === 0
})
// false
reduce
- 인자로 주어지는 함수(콜백 함수)를 각 요소에 대해 한 번씩 실행해서, 하나의 결과 값을 반환
- 즉, 배열을 하나의 값으로 계산하는 동작이 필요할 때 사용(총합, 평균 등)
- map, filter 등 여러 배열 메서드 동작을 대부분 대체할 수 있음
- acc
- 이전 callback 함수의 반환 값이 누적되는 변수
- initialValue ( optional )
- 최초 callback 함수 호출 시 acc에 할당되는 값, default값은 배열 첫 번째 값
const tests = [90, 90, 80, 77]
// 총합
const sum = tests.reduce(function (total, x) {
return total + x
}, 0) // 여기서 0 생략 가능 , 결과 : 337
// 화살표 함수
const sum = tests.reduce((total, x) => { total + x }, 0)
console.log(sum) // 337
//평균
const sum = tests.reduce((total, x) => total + x, 0) / tests.length
console.log(sum) // 84.25
배열 순회 비교

const chars = ['A', 'B', 'C', 'D']
// for loop
for (let idx = 0; idx < chars.length; idx++) {
console.log(idx, chars[idx])
}
// for ...of
for (const char of chars) {
console.log(char)
}
// forEach
chars.forEach((char,idx) => {
console.log(idx, char)
})
char.forEach(char => {
console.log(char)
})
728x90
반응형
'Front-end > JavaScript' 카테고리의 다른 글
JavaScript[9] - DOM (0) | 2023.04.25 |
---|---|
JavaScript[8] - 객체 (0) | 2023.04.25 |
JavaScript[6] - this와 배열 메서드 기초 (0) | 2023.04.20 |
JavaScript[5] - 함수와 Arrow Function (0) | 2023.04.20 |
JavaScript[4] - 조건문과 반복문 (0) | 2023.04.20 |
728x90
반응형
JavaScript [7] - 배열 메서드 심화
Array Helper Methods
- 배열을 순회하며 특정 로직을 수행하는 메서드
- 메서드 호출 시 인자로 callback 함수를 받는 것이 특징
(callback 함수 : 다른 함수의 인자로 전달되는 함수)
// 콜백 함수 예시
const numbers = [1, 2, 3]
numbers.forEach(function (num) {
console.log(num**2)
})
// 1
// 4
// 9
const callBackFunction = function (num) {
console.log(num**2)
}
numbers.forEach(callBackFunction)
// 1
// 4
// 9

forEach
- array.forEach(callback(element [, index [, array]]))
- 3가지 매개변수로 구성
- element : 배열의 요소
- index : 배열 요소의 인덱스
- array : 배열 자체
- 반환 값(return) 없음
// 예시
array.forEach(function (element, index, array) {
// do something
}
// 일단 사용
const colors = ['red', 'blue', 'green']
printFunc = function (color) {
console.log(color)
}
colors.forEach(printFunc)
// red
// blue
// green
// 함수 정의를 인자로 넣어보기
colors.forEach(function (color) {
console.log(color)
})
// 화살표 함수 적용하기
colors.forEach((color) => {
return console.log(color)
})
map
- array.map(callback(element[, index [, array]]))
- 배열의 각 요소에 대해 콜백 함수를 한번씩 실행
- 콜백 함수의 반환 값을 요소로 하는 새로운 배열 반환
- 기존 배열 전체를 다른 형태로 바꿀 때 유용
- forEach + return 이라 생각.
Array.map(function (element, index, array) {
// do something
})
const numbers = [1, 2, 3]
//함수 정의 (표현식)
const doubleFunc = function (number) {
return number * 2
}
// 함수를 다른 함수의 인자로 넣기(콜백 함수)
const doubledNumbers = numbers.map(doubleFunc)
console.log(doubledNumbers) // [2, 4, 6]
// 함수의 정의를 인자로 넣어보기
const doubledNumbers2 = numbers.map(function (number) {
return number * 2
})
console.log(doubledNumbers2) // [2, 4, 6]
// 화살표 함수 적용하기
const doubledNumbers3 = numbers.map((number) => {
return number * 2
})
console.log(doubledNumbers3) // [2, 4, 6]
filter
- array.filter(callback(element[, index [, array]]))
- 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
- 콜백 함수의 반환 값이 true인 요소들만 모아서 새로운 배열 반환
- 기존 배열의 요소들을 필터링할 때 유용
const products = [
{ name: 'cucumber', type: 'vegerable'},
{ name: 'banana', type: 'fruit'},
{ name: 'carrot', type:'vegetable'},
{ name: 'apple', type: 'fruit'},
]
// 함수 정의하고
const fruitFilter = function (fruitFilter) {
return products.type === 'fruit'
}
// 콜백으로 넘기고
const fruits = products.filter(fruitFilter)
console.log(fruits)
// [ { name: 'banana', type: 'fruit'}, { name: 'apple', type: 'fruit'}, { name: 'carrot', type:'vegetable' } ]
// 함수 정의를 인자로 넣어보기
const fruits = products.filter(function (product) {
return product.type === 'fruit'
}]
console.log(fruits)
// 화살표 함수 적용하기
const fruits = products.filter((product) => {
return product.type === 'fruit'
}]
console.log(fruits)
find
- array.find(callback(element[, index [, array]]))
- 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
- 콜백 함수의 반환값이 true면, 조건을 만족하는 첫번째 요소를 반환
- 찾는 값이 배열에 없으면 undefined 반환
const avengers = [
{ name: 'Tony stark', age: 45 },
{ name: 'Steve Rogers', age: 32 },
{ name: 'Thor', age: 40 },
]
const avenger = avengers.find(function(avenger) {
return avenger.name === 'Tony stark'
})
console.log(avenger) // { name: 'Tony stark', age: 45 }
// 화살표 함수 적용
const avenger = avengers.find((avenger) => {
return avenger.name === 'Tony stark'
})
console.log(avenger) // { name: 'Tony stark', age: 45}
some
- array.some(callback(element[, index [, array]]))
- 배열의 요소 중 하나라도 주어진 판별 함수를 통과하면 true 반환
- 모든 요소가 통과하지 못하면 거짓 반환
- 빈 배열은 항상 false 반환
const arr = [1, 2, 3, 4, 5]
const result = arr.some((elem) => {
return elem % 2 === 0
})
//true
every
- array.every(callback(element[, index [, array]]))
- 배열의 모든 요소가 주어진 판별 함수를 통과하면 true 반환
- 하나의 요소라도 통과하지 못하면 false 반환
- 빈 배열은 항상 true 반환
const arr = [1, 2, 3, 4 ,5]
const result = arr.every((elem) => {
return elem % 2 === 0
})
// false
reduce
- 인자로 주어지는 함수(콜백 함수)를 각 요소에 대해 한 번씩 실행해서, 하나의 결과 값을 반환
- 즉, 배열을 하나의 값으로 계산하는 동작이 필요할 때 사용(총합, 평균 등)
- map, filter 등 여러 배열 메서드 동작을 대부분 대체할 수 있음
- acc
- 이전 callback 함수의 반환 값이 누적되는 변수
- initialValue ( optional )
- 최초 callback 함수 호출 시 acc에 할당되는 값, default값은 배열 첫 번째 값
const tests = [90, 90, 80, 77]
// 총합
const sum = tests.reduce(function (total, x) {
return total + x
}, 0) // 여기서 0 생략 가능 , 결과 : 337
// 화살표 함수
const sum = tests.reduce((total, x) => { total + x }, 0)
console.log(sum) // 337
//평균
const sum = tests.reduce((total, x) => total + x, 0) / tests.length
console.log(sum) // 84.25
배열 순회 비교

const chars = ['A', 'B', 'C', 'D']
// for loop
for (let idx = 0; idx < chars.length; idx++) {
console.log(idx, chars[idx])
}
// for ...of
for (const char of chars) {
console.log(char)
}
// forEach
chars.forEach((char,idx) => {
console.log(idx, char)
})
char.forEach(char => {
console.log(char)
})
728x90
반응형
'Front-end > JavaScript' 카테고리의 다른 글
JavaScript[9] - DOM (0) | 2023.04.25 |
---|---|
JavaScript[8] - 객체 (0) | 2023.04.25 |
JavaScript[6] - this와 배열 메서드 기초 (0) | 2023.04.20 |
JavaScript[5] - 함수와 Arrow Function (0) | 2023.04.20 |
JavaScript[4] - 조건문과 반복문 (0) | 2023.04.20 |