
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
function solution(numbers) {
    var answer = 0;
    return answer;
}| numbers | result | 
|---|---|
| [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | 5.5 | 
| [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] | 94.0 | 
numbers의 원소들의 평균 값은 5.5입니다.
n이 4이므로 2 + 4 = 6을 return 합니다.
function solution(numbers) {
    let result = 0;
    for(let i=0; i<numbers.length; i++) {
        result+=numbers[i];
    }
    return (result/numbers.length);
}reduce()를 이용하여 푼게 신기해서 가져옴
역시 많이 알아야 제일 효율적으로 풀 수 있는거구나
function solution(numbers) {
    var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
    return answer;
}function solution(numbers) {
    var answer = 0;
    for(i of numbers) {
        answer += i
    }
    return answer / numbers.length;
}배열을 기반으로 하나의 결과값을 도출할 때 사용되는 함수이다.
함수를 실행하면 하나의 결과값만 반환한다.
기본적으로 아래와 같은 형태를 가진다.
array.reduce(callback[, initialValue])아래 두 개의 코드는 서로 같은 코드이다. return을 생략하고 작성했는지 안했는지의 차이
acc : 누적되는 값. 최종적으로 출력되는 값 (누산기)cur : 현재 요소const numbers = [1, 2, 3, 4];
let sum = numbers.reduce((acc, cur) => acc + cur);const numbers = [1, 2, 3, 4];
let sum = numbers.reduce((acc, cur) => {
	return acc + cur;
});위 함수의 동작 방식은 아래와 같다.
acc += cur; // 1 += 2;
acc += cur; // 3 += 3;
acc += cur; // 6 += 4;
console.log(acc); // 10acc : 누적되는 값. 최종적으로 출력되는 값 (누산기)cur : 현재 요소initialValue : acc의 초기값 (optional)const numbers = [4, 3, 2, 1];
let sum = numbers.reduce((acc, cur) => acc + cur, 0);
console.log(sum);이와 같이 초기값을 설정하면 index가 1부터가 아니라 0부터 들어가게 된다.
acc += cur; // 0 += 1;
acc += cur; // 1 += 2;
acc += cur; // 3 += 3;
acc += cur; // 6 += 4;
console.log(acc); // 10써본적도 있는 코드인데 맨날 헷갈려서 다시 정리해볼 겸 찾아봤다.
for of는 배열을 포함한 iterable객체를 순회하는 반복문이다.
for in은 객체의 프로퍼티. 키값을 순회하는 반복문이고,
forEach()는 배열을 순회하는 전용 메서드이다.
let arr = ["1", "2", "3"];
for (let item of arr) {
	console.log(item); // 1, 2, 3
}let obj = {
	a: 1,
  	b: 2,
  	c: 3
};
for (let prop in obj) {
	console.log(prop); // a, b, c
  	console.log(obj[prop]); // 1, 2, 3
}만약 배열에서 for...in을 사용하게 되면 배열의 요소만 출력되는 for...of와 달리 모든 요소가 출력된다.
Object.prototype.objCustom = function () {};   //Object 프로토타입에 커스텀 속성 추가
Array.prototype.arrCustom = function () {};    //Array 프로토타입에 커스텀 속성 추가
let iterable = [1, 2, 3];
iterable.foo = "hello";           //배열객체에 foo 속성 추가 및 값 할당.
console.log("for.. in 반복 결과");
for (let i in iterable) {
  console.log(i); // 0, 1, 2, foo, arrCustom, objCustom
  // 인덱싱 순서를 보장할 수 없음
}
console.log("for.. of 반복 결과");
for (let i of iterable) {
  console.log(i); // 1, 2, 3
}const arr = ["1", "2", "3"];
arr.forEach(element => {
  document.write(element); // 1, 2, 3
});