给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
给定一个数组[1,2,3,4],如何求其元素的和?(在这种情况下,总数为10。)
我认为每个美元可能有用,但我不确定如何实现它。
当前回答
也可以使用reduceRight。
[1,2,3,4,5,6].reduceRight(function(a,b){return a+b;})
其结果输出为21。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight
其他回答
一个简单的方法示例:
function add(array){
var arraylength = array.length;
var sum = 0;
for(var timesToMultiply = 0; timesToMultiply<arraylength; timesToMultiply++){
sum += array[timesToMultiply];
}
return sum;
}
console.log(add([1, 2, 3, 4]));
此函数可以将所有数字相加-
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])
这正是减薪的工作。
如果您使用的是ECMAScript 2015(又名ECMAScript6):
constsum=[1,2,3]。reduce((partialSum,a)=>partialSum+a,0);console.log(总和);//6.
对于旧的JS:
常量sum=[1,2,3]。reduce(add,0);//数组为空时避免使用初始值函数add(累加器,a){返回蓄能器+a;}console.log(总和);//6.
这不是很漂亮吗?:-)
事实上,有一个古老而有趣的经典解决方案(除了新手“foreach”和“reduce”):的经典。
y = 0;
for (x of [1, 2, 3, 4]) y+=x;
建议(使用默认值减少)
Array.prototype.reduce可用于遍历数组,将当前元素值与先前元素值之和相加。
控制台日志([1,2,3,4].减少((a,b)=>a+b,0))控制台日志([].减少((a,b)=>a+b,0))
无默认值
你得到一个TypeError控制台日志([].减少((a,b)=>a+b))
ES6箭头功能之前
控制台日志([1,2,3].reduce(函数(acc,val){return acc+val;},0))控制台日志([].reduce(函数(acc,val){return acc+val;},0))
非数字输入
如果非数字是可能的输入,您可能想处理它?控制台日志([“hi”,1,2,“frog”].减少((a,b)=>a+b))让numOr0=n=>isNaN(n)?0:n控制台日志([“hi”,1,2,“frog”].减少((a,b)=>numOr0(a)+numOr0)
非推荐危险评估用途
我们可以使用eval来执行JavaScript代码的字符串表示。使用Array.prototype.join函数将数组转换为字符串,我们将[1,2,3]更改为“1+2+3”,其值为6。
控制台日志(eval([1,2],3],join('+')))//如果建立阵列,这种方式很危险//因为它可能被利用,例如:eval([1,“2;alert('恶意代码!')”].join('+'))
当然,显示警报并不是可能发生的最糟糕的事情。我之所以将此作为奥特蒙德问题的答案,是因为我认为这一问题没有得到澄清。