各指標の平均で1つの配列を取得する最も簡単な方法は何なJavaScriptの整数配列を平均化する最も簡単な方法は何ですか?
[100, 43, 76, 95, 62],
[27, 54, 99, 13, 56],
[56, 92, 01, 46, 87]
として複数のアレイを持っている場合か? 私は動的な数の配列を持っていますが、それぞれに6つの項目があります。
(例えば上記の配列の平均が[61, 63, 59, 51, 68]
各指標の平均で1つの配列を取得する最も簡単な方法は何なJavaScriptの整数配列を平均化する最も簡単な方法は何ですか?
[100, 43, 76, 95, 62],
[27, 54, 99, 13, 56],
[56, 92, 01, 46, 87]
として複数のアレイを持っている場合か? 私は動的な数の配列を持っていますが、それぞれに6つの項目があります。
(例えば上記の配列の平均が[61, 63, 59, 51, 68]
であなただけ取得する一つのループを必要として行うことができます3つの配列の同じインデックスの要素を計算し、平均を計算します。
var arr1 = [100, 43, 76, 95, 62];
var arr2 = [27, 54, 99, 13, 56];
var arr3 = [56, 92, 01, 46, 87];
var res = [];
for(var i=0; i<arr1.length; i++){
var avg = Math.round((arr1[i]+ arr2[i]+ arr3[i])/3)
res.push(avg);
}
console.log(res);
そして、あなたは配列のdymanic数を持っている場合、これは魔法のように動作し、
var data = [[100, 43, 76, 95, 62],[27, 54, 99, 13, 56],[56, 92, 01, 46, 87]];
var res = [], sum;
for(var i=0; i<data[0].length; i++){
sum = 0;
for(var j=0; j<data.length; j++){
sum+= data[j][i];
}
res.push(Math.round(sum/data.length));
}
console.log(res);
だろうあなたは、次のよう
let arr = [
[100, 43, 76, 95, 62],
[27, 54, 99, 13, 56],
[56, 92, 01, 46, 87]
];
let ans = arr.reduce((a, b) => {
return a.map((x, i) => x+b[i]);
}).map(a => Math.round(a/arr.length));
console.log(ans);
私の答えを確認してください、それはOPが欲しいものです –
私の答えを編集しました – marvel308
Array#map 1、および取得するためにArray#reduceを使用各列の合計。まず、あなたのデータ構造ありえない理想で
const arr = [
[100, 43, 76, 95, 62],
[27, 54, 99, 13, 56],
[56, 92, 01, 46, 87]
];
const result = arr[0].map((item, index) =>
Math.round(arr.reduce((avg, sArr) => avg + sArr[index], 0)/arr.length)
);
console.log(result);
:次にサブアレイの数で合計を割ります。第1の行列を「回転させる」ことがあります。
const arr = [
[100, 43, 76, 95, 62],
[27, 54, 99, 13, 56],
[56, 92, 01, 46, 87]
];
const rotated = arr[0].map((_,i)=> arr.map(row=>row[i]));
を次に、あなたは簡単に行を合計し、その長さを介してそれらを分けることができます。
const result = rotated.map(
row => row.reduce((a,b) => a+b ,0)/row.length
);
あなたは同じインデックスですべての値を合計し、後で計算することができます平均。
var array = [[100, 43, 76, 95, 62], [27, 54, 99, 13, 56], [56, 92, 01, 46, 87]],
result = array
.reduce(function (r, a) {
a.forEach(function (b, i) {
r[i] = (r[i] || 0) + b;
});
return r;
}, [])
.map(function (a, i) {
return Math.round(a/array.length);
});
console.log(result);
私たちは、単にコンテキストのうち、問題を述べる記事を阻止し、コミュニティがそれを解決することを期待。あなた自身でそれを解決しようとしたと仮定した場合、あなたがあなたの考えを書いて、あなたが理解できなかったものが役立つかもしれません。間違いなくあなたの投稿への回答が増えます。それまでは、質問は閉会投票/投票投票に投票されます。 – Cerbrus