我在将数组的值彼此相减时遇到问题。加法完美,但减法却不行。它总是给我负数,但事实并非如此。
这是我的代码:
var numbers = [];
var userTimes = prompt('Cuantas operaciones quieres hacer?')
for (var i=0; i<userTimes; i++) {
var user = parseInt(prompt('Escribe un valor'));
numbers.push(user);
console.log(numbers);
}
function sum() {
var acc = 0;
numbers.forEach(function(obj){
acc += obj;
})
return acc;
}
console.log('La suma entre ' + numbers + ' hace: ' + sum());
function subs() {
var acc = 0;
numbers.forEach(function(obj){
acc -= obj;
})
return acc;
}
console.log('La resta entre ' + numbers + ' hace: ' + subs());
//Output sum: La suma entre 8,5,1 hace: 14
//Output subs: La resta entre 8,5,1 hace: -14
我已经查看了代码,并且由于您开始了,我认为通过以下方式对您来说会容易得多:
如果您对代码有任何疑问,我很乐意为您解答。
通过您在问题描述中留下的评论阐明了您的需求。您遇到的错误是,由于您在代码中使用的逻辑,您基本上总是将第一个数字设为负数。要获得正确的代数和,您必须添加一个条件,该条件允许您捕获第一个数字并将其相加而不是相减,以便正确执行操作。
当您开始编程时,我不会简化或复杂化代码(以优化您的工作),但我会放置更具指导性并同时解决您的问题的代码。这是对您的代码的更正:
我希望能有所帮助。一切顺利!
您的代码可以通过使用
Array.reduce
.在添加的情况下,此方法将负责添加数组的所有元素。在减法的情况下,我们将使用三元,告诉它,当它是第一个元素时,不要做任何操作。这将使第一个值保持不变,并将减去后面的所有值……就这么简单。
我在代码中添加了另一个元素:对提示的控制,以便用户在第一种情况下不输入负数,而在第二种情况下他只输入数字。
我希望它对你有帮助。
您可以使用减少功能