평균 및/또는 모드를 계산하는 우아한 방법
소개
codecademy.com 챌린지의 일부로 'Calculate Mean and Mode'라는 코드 챌린지를 발견했습니다. 문제 설명을 읽는 동안에는 매우 간단해 보였지만 시작하면서 많은 질문이 제기되었습니다. 그 결과, 도전을 통해 작업한 경험을 공유하기 위해 이 블로그를 만들었습니다.
도전
숫자 목록을 받아 평균과 모드가 포함된 목록을 순서대로 반환하는
statsFinder()
함수를 만듭니다. 참고로 평균은 값의 평균이고 최빈값은 가장 많이 발생하는 값입니다. 모드가 여러 개인 경우 먼저 발생하는 모드를 반환합니다. 함수를 작성하고 이러한 답을 처음부터 찾으십시오. 가져온 도구를 사용하지 마십시오!예:
statsFinder([500, 400, 400, 375, 300, 350, 325, 300]) should return [368.75, 400]
해결책
초심자, 중급자, 전문가 등 다양한 방법으로 이 챌린지에 접근할 수 있습니다. 중요한 것은 다음과 같은 기본 원칙을 준수하여 접근하는 것입니다(자유롭게 추가할 수 있음).
나의 접근
문제를 해결하려고 할 때 나는 내 직감을 99.99% 믿는다. 도전을 보았을 때 실제로 두 가지 사실을 깨달았습니다.
해결 방법
내 초기 생각은
for ... loop
를 사용하는 것이었지만 어레이 방법을 사용하여 짧은 시간에 해결할 수 있다는 것을 깨달았습니다. 따라서 .filter()
및 .reduce()
해결책
다음은 내가 권장하는 솔루션입니다.
function statsFinder(array) {
// Check array length return error statement
if (array.length === 0) return `Input error: argument is empty`
// Arrow function to derive the sum of all values in the array
const avgArray = (total, val) => total + val
/*
Below lines of code calculates mean
by dividing the result of .reduce() method
while mode arrow function to find duplicates
using .filter() method
*/
const mean = array.reduce(avgArray) / array.length
const mode = array.filter((val, index) => array.indexOf(val) !== index)
return [mean, mode[0]]
}
시도 해봐:
console.log(statsFinder([500, 400, 400, 375, 300, 350, 325, 300])) // [378.5, 400]
console.log(statsFinder([]))
유용한 링크
도전
https://www.codecademy.com/code-challenges/code-challenge-calculate-the-mean-and-mode-javascript
코드를 사용해 보세요: https://codepen.io/istealersn-dev/pen/wvjJxRX
Reference
이 문제에 관하여(평균 및/또는 모드를 계산하는 우아한 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/istealersndev/elegant-way-to-calculate-mean-andor-mode-hjd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)