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