문제설명>
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한사항
- arr은 길이 1 이상, 100 이하인 배열입니다.
- arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
코드>
function solution(arr) {
var answer = 0;
for(var i=0;i<arr.length;i++){
answer += arr[i];
}
return answer = answer/arr.length;
}
리뷰>
function average(array) {
return array.reduce((a,b) => a+b) / array.length;
}
reduce() 메소드는 배열의 각 요소에 대해 주어진 reducer 함수를 실행하고, 하나의 결과값을 반환한다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
#배열의 모든 값 합산
var sum = [0,1,2,3]
sum.reduce((a,b)=>a+b)
// 6
#중첩 배열 펼치기
var flattened = [[0,1],[2,3],[4,5]]
.reduce((a,b)=>a.concat(b), [])
// [0,1,2,3,4,5]
#객체 내의 값 인스턴스 개수 세기
var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
var countedNames = names.reduce(function(allNames, name) {
if(name in a){
allNames[name]++;
}
else {
allNames[name] = 1;
}
return allNames;
}, {} );
// { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }
#속성으로 객체 분류하기
var people = [
{ name: 'Alice', age: 21 },
{ name: 'Max', age: 20 },
{ name: 'Jane', age: 20 }
];
function groupBy(objectArray, property) {
return objectArray.reduce(function (acc, obj) {
var key = obj[property];
if(!acc[key]) {
acc[key] = [];
}
acc[key].push(obj);
return acc;
}, {} );
}
var groupedPeople = groupBy(people, 'age');
// groupedPeople is:
// {
// 20: [
// { name: 'Max', age: 20 },
// { name: 'Jane', age: 20 }
// ],
// 21: [{ name: 'Alice', age: 21 }]
// }
#확장연산자와 초기값을 사용하여 객체로 이루어진 배열에 담긴 배열 연결하기
#배열의 중복 항목 제거
#프로미스를 순차적으로 실행하기
#함수 구성을 위한 파이프 함수
#reduce()로 map() 작성
'코딩테스트 연습 > Javascript' 카테고리의 다른 글
[Javascript] 해시 - 위장 (0) | 2020.12.03 |
---|---|
프로그래머스 | 나누어 떨어지는 숫자 배열 (0) | 2020.09.15 |
[프로그래머스] 2016년 (0) | 2020.07.30 |
[프로그래머스] 약수의 합 (0) | 2020.07.28 |
[프로그래머스] 문자열을 정수로 바꾸기 (0) | 2020.07.28 |
댓글