Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中计算数组的数值之和_Javascript_Arrays - Fatal编程技术网

在JavaScript中计算数组的数值之和

在JavaScript中计算数组的数值之和,javascript,arrays,Javascript,Arrays,我有以下数组: myArray = [32.4, "bla", 1.44, 0.5, 65.8, "abc"]; 要计算只包含数字的数组的和非常简单,但是如果还有必须忽略的非数值,该如何计算呢?使用reduce和isNaN var arr = [32.4, "bla", 1.44, 0.5, 65.8, "abc"]; var output = arr.reduce( ( a, c ) => a + ( isNaN( c ) ? 0 : c ), 0 ); 演示 var-arr=[3

我有以下数组:

myArray = [32.4, "bla", 1.44, 0.5, 65.8, "abc"];

要计算只包含数字的数组的
非常简单,但是如果还有必须忽略的非数值,该如何计算呢?

使用
reduce
isNaN

var arr = [32.4, "bla", 1.44, 0.5, 65.8, "abc"];
var output = arr.reduce( ( a, c ) => a + ( isNaN( c ) ? 0 : c ), 0 );
演示

var-arr=[32.4,“bla”,1.44,0.5,65.8,“abc”];
var输出=arr.reduce((a,c)=>a+(isNaN(c)?0:c,0);
console.log(output.toFixed(2))您可以将函数与结合使用来检查您是否有数字

var myArray=[32.4,“bla”,1.44,0.5,65.8,“abc”];
var res=myArray.reduce(函数(acc,curr){
返回acc+(isNaN(当前)?0:当前);
});

控制台日志(res)
您可以使用
array.prototype.filter
array.prototype.reduce

var myArray=[32.4,“bla”,1.44,0.5,65.8,“abc”];
var sum=myArray.filter(n=>!isNaN(n)).reduce((m,n)=>m+n);

控制台日志(总和)使用
。减少
并使用
isNaN()检查元素是否为数字

如果要添加表示数字的字符串,则可以使用:

var myArray=[32.4,“bla”,1.44,0.5,65.8,“abc”];
var sum=myArray.reduce((acc,el)=>acc+(!isNaN(el)?+el:0));
控制台日志(总和)

然后计算
数字之和

将所有内容解析为数字并检查NaN

var sum = 0
myArray.forEach(el => {
   if(!Number.isNaN(parseFloat(el))) sum += parseFloat(el)
})
此解决方案也适用于字符串表示数字的数组,如[“4.5”、“5”、“a”、10](将给出19.5) 如果您不希望出现这种行为,最好检查以下类型:

var sum = 0
myArray.forEach(el => sum += (typeof el == "number" ? el : 0))

我甚至会将上面的两个答案结合起来,使用常见的Map Reduce策略:

var numbers = myArray.map((value) => {
    value = parseFloat(value);
    if(isNaN(value)) value = 0;
}).reduce(function(acc, curr){
  return acc + (isNaN(curr) ? 0 : curr);
});
当然,您可以按Map或reduce函数中的所有内容,但正如我所学的那样,Map函数以适当的形式准备值,然后reduces函数的目标只是使用给定的函数/策略将所有可用值合并为一个值


(如果有语法错误,我很抱歉,我只在Swift atm中编码。)

检查
类型
a.filter(Number.isFinite)。reduce((x,y)=>x+y)
try
myArray=[“1”、“2”、“3”]
try
myArray=[“1”、“2”、“3”]
var numbers = myArray.map((value) => {
    value = parseFloat(value);
    if(isNaN(value)) value = 0;
}).reduce(function(acc, curr){
  return acc + (isNaN(curr) ? 0 : curr);
});