给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
当前回答
Object.defineProperty(Object.prototype, 'sum', {
enumerable:false,
value:function() {
var t=0;for(var i in this)
if (!isNaN(this[i]))
t+=this[i];
return t;
}
});
[20,25,27.1].sum() // 72.1
[10,"forty-two",23].sum() // 33
[Math.PI,0,-1,1].sum() // 3.141592653589793
[Math.PI,Math.E,-1000000000].sum() // -999999994.1401255
o = {a:1,b:31,c:"roffelz",someOtherProperty:21.52}
console.log(o.sum()); // 53.519999999999996
其他回答
这可以通过循环所有项,并在每次迭代中将它们添加到一个和变量中来实现。
var array = [1, 2, 3];
for (var i = 0, sum = 0; i < array.length; sum += array[i++]);
JavaScript不知道块的作用域,所以可以访问sum:
console.log(sum); // => 6
同上,但注释和准备为简单函数:
function sumArray(array) {
for (
var
index = 0, // The iterator
length = array.length, // Cache the array length
sum = 0; // The total amount
index < length; // The "for"-loop condition
sum += array[index++] // Add number on each iteration
);
return sum;
}
为什么不减少?这通常有点反直觉,但使用它求和非常简单:
var a = [1,2,3];
var sum = a.reduce(function(a, b) { return a + b; }, 0);
使用递归
var sum = (arr) => arr.length === 1 ? arr[0] : arr.shift() + sum(arr);
sum([1,2,3,4]) // 10
一个“重复”问题问如何对二维数组执行此操作,因此这是一个简单的适应问题。(区别仅在于六个字符[2],0,它在每个子数组中找到第三项,并传递初始值0):
常量二维数组=[[10, 10, 1],[10, 10, 2],[10, 10, 3],];constsum=twoDimensionalArray.reduce((partial_sum,a)=>partial_sum+a[2],0);console.log(总和);//6.
此函数可以将所有数字相加-
function array(arr){
var sum = 0;
for (var i = 0; i< arr.length; i++){
sum += arr[i];
}
console.log(sum);
}
array([5, 1, 3, 3])