繁体   English   中英

计算JavaScript中数组的数值总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM