[英]Compute sum of numerical values of an array of arrays in JavaScript
輸入以下內容:
myArray = [[32.4, "bla", 1.44, 0.5, 65.8, "abc"],
[654, "ert"]
[9.4, "a", 1.44, "abc"]];
數組數組,我想計算每個子數組的總和,也忽略字符串值。
我知道對於這種類型的單個數組,總和可以計算為:
sum = myArray.filter(n => !isNaN(n)).reduce((m, n) => m + n);
但是當我嘗試對矩陣使用相同的方法時,結果為0
。
有什么建議么?
您可以嘗試將值轉換為帶有一元加號+
的數字,也可以取零進行加法。
var array = [[32.4, "bla", 1.44, 0.5, 65.8, "abc"], [654, "ert"], [9.4, "a", 1.44, "abc"]], result = array.map(a => a.reduce((s, v) => s + (+v || 0), 0)); console.log(result);
您可以使用map
方法和內部filter
僅獲取數字數組,然后reduce
以獲取每個數組的總和。
const myArray = [ [32.4, "bla", 1.44, 0.5, 65.8, "abc"], [654, "ert"], [9.4, "a", 1.44, "abc"] ]; const result = myArray.map(arr => { return arr .filter(Number) .reduce((r, e) => r + e) }) console.log(result)
現在,當您處理數組數組時,可以應用相同的代碼,但是它必須在外部reduce
才能遍歷外部數組:
const sum = myArray.reduce(
(s, arr) => s + arr.filter(n => !isNaN(n)).reduce((m, n) => m + n),
0
);
現場示例:
const myArray = [ [32.4, "bla", 1.44, 0.5, 65.8, "abc"], [654, "ert"], [9.4, "a", 1.44, "abc"] ]; const sum = myArray.reduce((s, arr) => s + arr.filter(n => !isNaN(n)).reduce((m, n) => m + n), 0); console.log(sum);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.