Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中,如何以线性顺序从数组中减去所有项?_Javascript_Arrays - Fatal编程技术网

在JavaScript中,如何以线性顺序从数组中减去所有项?

在JavaScript中,如何以线性顺序从数组中减去所有项?,javascript,arrays,Javascript,Arrays,我已经能够使用以下代码获得所有项目的总和: var totalPrice = [60,40]; var total = 0; for (var i = 0; i < totalPrice.length; i++){ total += totalPrice[i]; } var totalPrice=[60,40]; var合计=0; 对于(变量i=0;i

我已经能够使用以下代码获得所有项目的总和:

var totalPrice = [60,40];

var total = 0;

   for (var i  = 0; i < totalPrice.length; i++){

      total  += totalPrice[i];

   }
var totalPrice=[60,40];
var合计=0;
对于(变量i=0;i
然后,我尝试减去数组中的所有项,执行以下操作:

 totalPrice = [60,40];

var total = 0;

   for (var i  = 0; i < totalPrice.length; i++){

      total  -= totalPrice[i];

   }
totalPrice=[60,40];
var合计=0;
对于(变量i=0;i
这给了我一个负的和不正确的输出


如何减去数组中的所有项,以便在本例中,总和等于20。

看起来您并不是要从0中减去所有项,而是要从第一个项中减去除第一个项以外的所有项。这将是一个很好的使用
reduce
的地方:

consttotalprice=[60,40];
const total=总价格。reduce((a,b)=>a-b);

控制台日志(总计)既然您提到了,您不希望以负结果结束,而是希望以线性顺序执行减法,那么您应该确保数组的第一项大于数组中所有其他项的总和

并且还存储数组的第一项,如下所示

 totalPrice = [60,40];

 var total = totalPrice[0];

 for (var i  = 1; i < totalPrice.length; i++){
     total  -= totalPrice[i];
 }
totalPrice=[60,40];
var总计=总价格[0];
对于(变量i=1;i

希望有帮助。

这更像是一道数学题,而不是一道编程题。只是不要以
0
作为总值开始。从第一个数组元素开始,从索引
1
开始迭代。“减去数组中的所有项”并不意味着什么。从什么中减去什么?一旦你自己回答了这个问题,你就可以修复你的程序了。这很可能是不可能的。您可以尝试的方法是,在数组中找到最大值。然后对所有其他值求和,但如果该和大于最大值,那么在所有减法运算完成后,最终将得到一个负数。乔治,这是一个非常好的主意,似乎是唯一可以得出正结果的方法。经过一番思考,我意识到将数组中的所有数字相减很可能会导致负面结果。人们最大的希望是找到最大值,然后从中减去所有其他数字。高于0的加法总是带来积极的结果,而高于0的减法很可能会导致消极的结果。谢谢你的回答。我看到的唯一问题是,在这个例子中,您知道我的数组中有多少个数字。但我想做的是,通过一个更大的数组循环,我不知道其中有多少项,我想把它们都减去。我如何循环数组并减去所有项目?假设我使用排序算法将所有数字从大到小进行排序。但是从您发布的内容来看,您似乎不想
减去所有项目
-您似乎想从第一个项目中减去除第一个项目以外的所有项目,在这种情况下,无论数组的长度如何(只要它至少有一个元素),代码都将工作。是的,您是正确的,不是所有项,每个项都位于第一个和最大的数字之后。如果我有1-10的数字,它会是这样的:10-9-8-7-6-5-4-3-2-1这里唯一的问题是如果它是一个空数组,否则如果数组中至少有一个元素,这两种方法都会起作用。这很有帮助,但如果你给出一个例子说明你所说的话,它会更有用。幸运的是,数字已经从大到小排序。我想知道你如何把数字从大到小排序,然后做减法。