17_Array
# 오늘 한 일
배열 method
Q: 평균을 구하는 함수를 만드시오. class Student { constructor(name, age, enrolled, score) { this.name = name; this.age = age; this.enrolled = enrolled; this.score = score; } } const students = [ new Student('A', 29, true, 45), new Student('B', 28, false, 80), new Student('C', 30, true, 90), new Student('D', 40, false, 66), new Student('E', 18, true, 88), ]; function average(score) { const result = students .filter(student => student.score >= score) .map(student => student.score) .reduce((prev, curr) => (prev + curr), 0); const howMany = students.filter(student => student.score >= score) console.log(result/howMany.length); } average(80);
- 리뷰
.filter(student => student.score >= score)
:: 조건에 맞는 score를 value값으로 가진 element를 return한다.
new Student('B', 28, false, 80) new Student('C', 30, true, 90) new Student('E', 18, true, 88)
.map(student => student.score)
:: 위의 element가 가진 score의 value값만 return한다.
[80, 90, 88]
.reduce((prev, curr) => prev + curr, 0);
:: 위의 값을 더한다.
258
조금 더 풀어서 설명하자면
1) reduce는 return값을 정해줘야 한다.
2) initial value를 숫자로 입력하지 않을 경우 NaN오류 발생
3) initial value는 prev + curr, 0
에서 0처럼 지정 가능
4) parameter 값은 임의로 설정해도 문제는 없지만, 다른 개발자가 봤을 때도 이해하기 쉽게 작성해야 한다.
.reduce((prev, curr) => { console.log('----'); console.log(prev); console.log(curr); return prev + curr; }, 0); // 결과값: // ---- // 0 // 80 // ---- // 80 // 90 // ---- // 170 // 88
const howMany = students.filter(student => student.score >= score)
console.log(result/howMany.length);
:: 위에서 찾은 값을, 조건에 맞는 score를 가진 element의 개수로 나누어 평균값을 구한다.
console.log(result) // 258 console.log(howMany) // [80, 90, 88] console.log(howMany.length) // 3 console.log(result / howMany.length) // 86
-
filter / find
:: 조건에 맞는 element를 찾아서 해당 element를 return하는 method. (element가 객체면 해당 객체를 return한다.)
:: 단, find는 조건에 맞는 첫 번째 element만을 return한다. -
map
:: element를 return할 수도 있고, element가 객체일 때는 value값을 return할 수도 있다.
const number = [2, 4, 5, 7, 10]; number.map(num => num); // 결과값: [2, 4, 5, 7, 10] number.map(num => num * 3); // 결과값: [6, 12, 15, 21, 30]
Author And Source
이 문제에 관하여(17_Array), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@taekjun_s/TIL17Array저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)