我有一个包含一些值的数组,我想得到它们的总和。这是示例:
var somearray = ["20","40","80","400"];
我想使用 jQuery 对这些值求和。在此示例中,结果将为 540。
也可以处理浮点数:
-
(旧)JavaScript:
var arr = ["20.0","40.1","80.2","400.3"],
n = arr.length,
sum = 0;
while(n--)
sum += parseFloat(arr[n]) || 0;
-
ECMA 5.1/6:
var arr = ["20.0","40.1","80.2","400.3"],
sum = 0;
arr.forEach(function(num){sum+=parseFloat(num) || 0;});
-
ES6:
var sum = ["20.0","40.1","80.2","400.3"].reduce((pv,cv)=>{
return pv + (parseFloat(cv)||0);
},0);
reduce() 在旧的 ECMAScript 版本中可用,箭头函数是 ES6 特定的。
我将 0 作为第一个传递pv
值,所以我不需要解析浮点型在它周围 - 它将始终保存先前的总和,该总和始终是数字。因为目前的价值,cv
, 可以是非数字 (NaN
), 我们用||0
在其上跳过数组中的该值。如果您想分解一个句子并获得其中数字的总和,这非常棒。这是一个更详细的示例:
let num_of_fruits = `
This is a sentence where 1.25 values are oranges
and 2.5 values are apples. How many fruits are
there?
`.split(/\s/g).reduce((p,c)=>p+(parseFloat(c)||0), 0);
// num_of_fruits == 3.75
-
jQuery:
var arr = ["20.0","40.1","80.2","400.3"],
sum = 0;
$.each(arr,function(){sum+=parseFloat(this) || 0;});
以上内容为您带来什么:
- 能够将任何类型的值输入到数组中;数字或数字字符串(
123
or "123"
)、浮点字符串或数字 ("123.4"
or 123.4
),甚至文本 (abc
)
- 仅添加有效数字和/或数字字符串,忽略任何裸文本(例如 [1,'a','2'] 总和为 3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)