[英]Finding sums and max.min for an array/matrix
我有這個數組pro-matrix。
var array =[[1,2,3,4],
[2,3,4,5],
[6,5,4,3],
[4,3,2,1]];
我試圖找到整個數組以及每一行的總和。 這是我查找總金額的函數,但它返回任何東西。
function sumArray(array) {
for (
var
index = 0,
length = array.length,
sum = 0;
index < length;
sum += array[index++]
);
return sum;
}
任何想法可能是什么問題?
您可以使用Array#map()
和Array#reduce()
。
function sum(a, b) { return a + b; } var array = [[1, 2, 3, 4], [2, 3, 4, 5], [6, 5, 4, 3], [4, 3, 2, 1]], sums = array.map(function (a) { return a.reduce(sum); }); document.write('<pre>' + JSON.stringify(sums, 0, 4) + '</pre>'); document.write('total: ' + sums.reduce(sum));
ES6
var add = (a, b) => a + b, array = [[1, 2, 3, 4], [2, 3, 4, 5], [6, 5, 4, 3], [4, 3, 2, 1]], sums = array.map(a => a.reduce(add)); document.write('<pre>' + JSON.stringify(sums, 0, 4) + '</pre>'); document.write('total: ' + sums.reduce(add));
Array.prototype.forEach()
在一行中的解決方案
var array =[[1,2,3,4], [2,3,4,5], [6,5,4,3], [4,3,2,1]]; var sum = 0; array.forEach(a => a.forEach(b => sum+=b)); document.write(sum);
在for
循環中無法訪問for
-loop中變量的變量。 你的代碼應該是這樣的:
function sumArray(array) {
var sum = 0;
for (var index = 0;
index < array.length;
sum += array[index++]
);
return sum;
}
您可以使用Array.prototype.concat.apply()來展平您的數組,然后將其減少以計算所有元素的總和:
var sum = [].concat.apply([], array).reduce(function(a, b) {
return a + b;
});
console.log(sum); // 52
如果你可以使用ES6語法,使用箭頭函數和擴展運算符可以更加優雅:
[].concat(...array).reduce((a, b) => a + b); // 52
數組中有數組,因此您可以通過這種方式將函數用於每一行:
for (var i = 0, total_sum = 0; i < array.length; total_sum += sumArray(array[i++]));
console.log(total_sum);
這不是在javascript中編寫可讀代碼的最佳方式,但我喜歡它=)
該數組是由四個數組組成的數組,每個數組包含四個元素元素。 您想要找到每一行的總和以及所有行的總和。
這個怎么樣?
function sumArray( array ) {
var lineTotals = [];
var grandTotal = 0;
for ( var i = 0; i < array.length; i++ ) {
lineTotals.push( 0 );
for ( var j = 0; j < array[i].length; j++ ) {
lineTotals[ i ] += array[ i ][ j ];
}
grandTotal += lineTotals[ i ];
}
return grandTotal;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.