使用jQuery计算数组中的值的总和
使用jQuery计算数组中的值的总和
这个问题已经有了答案:
我有一个包含一些值的数组,我想要得到它们的总和。以下是示例:
var somearray = ["20","40","80","400"];
我想使用jQuery对这些值进行求和。在这个示例中,结果应该是540。
admin 更改状态以发布 2023年5月24日
你不需要jQuery。你可以使用一个for
循环来实现这个功能:
var total = 0; for (var i = 0; i < someArray.length; i++) { total += someArray[i] << 0; }
相关内容:
为了处理浮点数:
-
(旧版) 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
值传入,因此我不需要在它周围加上parseFloat - 它将始终保持上一个总和,这将始终是数字。因为当前值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
或"123"
),浮点字符串或数字("123.4"
或123.4
),甚至是文本(abc
) - 只会添加有效的数字和/或数字字符串,忽略任何裸文本 (例如[1,'a','2']求和为3)