[코플릿] 고차함수
🤖 고차함수
특징
- 다른 함수를 인자로 받는 경우
- 함수를 리턴하는 경우
- 위 두가지 모두에 해당하는 경우
26_calculateScore
문제
객체를 요소로 갖는 배열과 문자열을 입력받아 각 요소의 'animal' 속성값이 문자열과 일치할 경우, 해당 요소의 'score' 속성값을 모두 더한 값을 리턴
입출력 예시
const records = [
{
score: 63,
animal: 'dog',
},
{
score: 87,
animal: 'cat',
},
{
score: 24,
animal: 'dog',
},
];
let output = calculateScore(records, 'dog');
console.log(output); // --> 87
나의 코드
function calculateScore(records, value) {
const filtered = records.filter((x) => x.animal === value);
const sum = (a, b) => a + b;
return filtered.map(x => x.score).reduce(sum,0);
}
✅ filtered
변수에 함수 매개변수로 받아온 value
값과 records
배열 안 객체의 animal
값과 같은 경우만 반환
✅ map()
메소드를 이용해서 score 값으로만 새로운 배열을 반환한 후, 그 배열에 reduce()
메소드를 이용해 누적값 리턴
Reference
function calculateScore(records, value) {
const sum = records.reduce(function (acc, cur) {
if (cur.animal === value) {
return acc + cur.score;
} else {
return acc;
}
}, 0);
return sum;
}
✅ reduce()
메소드만 이용하여 그 안에서 if/else() 구문 사용
27_getLongestElement
문제
문자열을 요소로 갖는 배열을 입력받아 배열에서 가장 긴 문자열을 리턴
주의 사항
- 가장 긴 문자열이 중복이 될 경우, 앞 쪽에 있는 요소를 리턴
- 빈 배열을 입력받은 경우, 빈 문자열을 리턴
입출력 예시
let output = getLongestElement(['one', 'two', 'three']);
console.log(output); // --> 'three'
output = getLongestElement(['one', 'two', 'wow']);
console.log(output); // --> 'one'
나의 코드
function getLongestElement(arr) {
const length = arr.map((x) => x.length);
let max = 0;
length.forEach((x)=>{
if(x > max){
max = x;
}
})
const index = length.indexOf(max);
if(index >= 0){
return arr[index];
} else{
return "";
}
}
✅ map()
메소드를 이용해서 배열안 요소들의 길이로 이루어진 새로운 배열을 변수 length
에 할당
✅ forEach()
메소드를 이용해서 length
에 있는 값들 중 가장 큰 값을 변수 max
에 할당
✅ 변수 max
를 이용해서 length
에서의 위치 값을 새로운 변수 index
에 할당
✅ index
값을 기준 삼아서, 0 이상인 경우 arr[index]
을 리턴하고 그렇지 않으면 빈 문자열 리턴
Reference
function calculateScore(records, value) {
const sum = records.reduce(function (acc, cur) {
if (cur.animal === value) {
return acc + cur.score;
} else {
return acc;
}
}, 0);
return sum;
}
✅ reduce()
메소드만 이용하여 그 안에서 if/else() 구문 사용
❗️ 위의 문제에서도 그렇고, reduce() 활용법에 좀더 친숙해질 필요가 있겠다!
Author And Source
이 문제에 관하여([코플릿] 고차함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tiatiahwang/Javascript-코플릿-고차함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)