상세 컨텐츠

본문 제목

Javascript 고차 함수문제(7) - calculateScore

Programming Language/JavaScript

by Yongari 2022. 12. 10. 23:14

본문

 

문제

객체를 요소로 갖는 배열과 문자열을 입력받아 각 요소의 'animal' 속성값이 문자열과 일치할 경우, 해당 요소의 'score' 속성값을 모두 더한 값을 리턴해야 합니다.

입력
인자1 : records 객체를 요소로 갖는 배열
인자2 : string 타입의 문자열

출력
number 타입을 리턴해야 합니다.


입출력 예시

const records = [
  {
    score: 63,
    animal: 'dog',
  },
  {
    score: 75,
    animal: 'dog',
  },
  {
    score: 87,
    animal: 'cat',
  },
  {
    score: 98,
    animal: 'cat',
  },
  {
    score: 24,
    animal: 'dog',
  },
];

let output = calculateScore(records, 'cat');
console.log(output); // --> 185

output = calculateScore(records, 'dog');
console.log(output); // --> 162

output = calculateScore([], 'dog');
console.log(output); // --> 0

output = calculateScore(records, 'mouse');
console.log(output); // --> 0

 

 

풀이코드 설명

function calculateScore(records, value) {
  // reduce를 통해 모든 배열을 순회하면서 value와 일치하는 객체의 animal을 골라낸 뒤 합계를 구한다.
const sum = records.reduce(function(acc, cur){
    if (cur.animal === value){
      return acc + cur.score; 
    }
    else{//일치하지 않으면 acc만 반환
      return acc;
    }
  },0);
  return sum;
}

 

관련글 더보기