假设我有一个包含十进制数字的类数组容器。我想要它们的和。在Python中,我会这样做:
x = [1.2, 3.4, 5.6]
sum(x)
是否有类似简洁的方法在 JavaScript 中实现这个功能?
假设我有一个包含十进制数字的类数组容器。我想要它们的和。在Python中,我会这样做:
x = [1.2, 3.4, 5.6]
sum(x)
是否有类似简洁的方法在 JavaScript 中实现这个功能?
另一种简单的迭代函数方法:
function sum(arr) {
var result = 0, n = arr.length || 0; //may use >>> 0 to ensure length is Uint32
while(n--) {
result += +arr[n]; // unary operator to ensure ToNumber conversion
}
return result;
}
var x = [1.2, 3.4, 5.6];
sum(x); // 10.2
使用 Array.prototype.reduce
的另一种方法:
var arr = [1.2, 3.4, 5.6];
arr.reduce(function (a, b) { return a + b; }, 0); // 10.2
reduce
方法是 ECMAScript 5 标准的一部分,已经广泛使用,但在 IE <= 8 上不可用,不过可以从我提供的 Mozilla 开发中心链接中包含其实现。
Array.prototype.sum = function() {
return (! this.length) ? 0 : this.slice(1).sum() +
((typeof this[0] == 'number') ? this[0] : 0);
};
使用它作为,
[1,2,3,4,5].sum() //--> returns 15
[1,2,'',3,''].sum() //--> returns 6
[].sum() //--> returns 0
x = [1.2, 3.4, 5.6]
x.sum(); // returns 10.2
好的,正如评论中指出的那样,您也可以以非递归方式完成它。
Array.prototype.sum = function() {
var num = 0;
for (var i = 0; i < this.length; i++) {
num += (typeof this[i] == 'number') ? this[i] : 0;
}
return num;
};
function sum(arr) {
var num = 0;
for (var i = 0; i < arr.length; i++) {
num += (typeof arr[i] == 'number') ? arr[i] : 0;
}
return num;
};
将其用作,
sum([1,2,3,4,5]) //--> returns 15
x = [1.2, 3.4, 5.6]
sum(x); // returns 10.2
$.sum
? - Reigel Gallarde$.sum =
,您就拥有了一个jQuery插件:P - Stefan Kendall