I는 다음과 같습니다 배열이 있습니다평균
var array = [ [1,3,9],
[4,6,8],
[3,7,5],
[2,8,4] ];
나는 각 열의 평균 수를 얻을 싶어하지만 지금 난 그냥 요약하려고했습니다 그들.
var sum = function(arr) {
return arr.reduce(function(a, b) { return a + b; }, 0);
};
var tests = array.map(function(v, i) {
return sum(array.map(function(v) { return v[i]; }))
});
return tests;
출력이 올바르게 합을 회전,하지만 컬럼에 해당하는 대신 3의 행 (4 행)만큼의 금액을하는 것 같다 : 이것은 내 코드입니다. 다음은 출력물입니다.
tests = [10, 24, 26, NULL]
왜 이런 생각입니까? 행 대신 개수가 많은 열에 대해서만 계산을 수행하려면 어떻게합니까?
편집 : 나는 정확한 결과를 제공 Nenad의 대답을 사용하고
. 하지만 Google 스프레드 시트의 스크립트 편집기에 구현해야합니다.이 편집기는 "=>"로 단축 된 기능을 이해하지 못하는 것 같습니다. 나는 더 긴 버전을 위해 단축 된 조각을 바꿨지 만, 나는 같은 결과를 얻지 않을 것이다.
var array = [ [1,3,9],
[4,6,8],
[3,7,5],
[2,8,4] ];
var sums = array.reduce(function(r, e, i) {
e.forEach(function(a,j) { r[j] = (r[j] || 0) + a;
if (i == array.length-1) { r = r.map(function(el){ return el/array.length; }); }
});
return r;
}, [])
console.log(sums);
나는 이것과 단축 버전의 차이를 볼 수 없습니다, 아직이 하나가 반환
sums = [0.15625, 0.75, 1.34375];
대신에 :
sums = [2.5, 6, 6.5];
합계가 올바르게 수행되지만, "el/array.length"또는 나눌 때 "el/4", 결과는이 3 개의 이상한 숫자입니다. 나는 어디에서 오는 사람들인지 이해하지 못한다. 나는 어디로 잘못 갔는가?
것은 https://jsfiddle.net/Lg0wyt9u/1440/ –
이 매우 네나드을 감사하십시오! 이 다른 버전은 Google의 스크립트 편집기에서 작동합니다. 나는 괄호로 큰 거래를 엉망으로 만들었다. -_-이 전체 .map/.reduce 함수는 나에게 매우 새롭다. 다시 한번 감사드립니다, 네나드! – ireth92
반갑습니다. –