Javascript 尝试对数组使用IF语句时遇到问题

Javascript 尝试对数组使用IF语句时遇到问题,javascript,Javascript,我正在为一个uni项目创建一个购物车,但是在测试我的阵列时遇到了问题。如果选择的元素超过5个,则总价应有10%的折扣。当只为大于5的数量选择一个元素时,可变折扣可以正常工作,但如果数量在两个元素之间分割,则返回0(这意味着如果POTATOS=6,折扣有效,但如果POTATOS=4和BLUEBERRY=2,则不再有效)。 代码如下: function Calc() { var numberPotatos = document.getElementById('potatos_

我正在为一个uni项目创建一个购物车,但是在测试我的阵列时遇到了问题。如果选择的元素超过5个,则总价应有10%的折扣。当只为大于5的数量选择一个元素时,可变折扣可以正常工作,但如果数量在两个元素之间分割,则返回0(这意味着如果POTATOS=6,折扣有效,但如果POTATOS=4和BLUEBERRY=2,则不再有效)。 代码如下:

    function Calc() {
        var numberPotatos = document.getElementById('potatos_id').value;
        var numberBlueberry =  document.getElementById('blueberry_id').value;
        var numberStrawberry = document.getElementById('strawberry_id').value;
        var numberEggplants = document.getElementById('eggplants_id').value;
        var numberKiwis = document.getElementById('kiwis_id').value;
        var numberBananas = document.getElementById('bananas_id').value;

        var output = "";



        var MyArray= new Array (6); 
            MyArray [0] = numberPotatos;
            MyArray [1] = numberBlueberry;
            MyArray [2] = numberStrawberry;
            MyArray [3] = numberEggplants;
                MyArray [4] = numberKiwis;
            MyArray [5] = numberBananas;

         var MySecondArray  = new Array (6);
MySecondArray [0] = 6;
MySecondArray [1] = 7;
MySecondArray [2] = 5;
MySecondArray [3] = 22;
MySecondArray [4] = 12;
MySecondArray [5] = 4;

// MORE CODE 


var sum = 0;
for(var i=0; i< MyArray.length; i++) {
    sum += MyArray [i ]* MySecondArray[i];
    document.getElementById('test').innerHTML = sum;
}

    var discount = 0;  
    for(var i=0; i<MyArray.length;i++ )
     { 
        if(MyArray[i] > 5){  
           discount = (sum - (sum * 0.10));
            discount = parseFloat(discount);
      }
      document.getElementById('test2').innerHTML = discount;
      }



}
函数计算(){
var numberPotatos=document.getElementById('potatos_id')。值;
var numberBlueberry=document.getElementById('blueberry_id')。值;
var numberStrawberry=document.getElementById('草莓id')。值;
var numberEggplants=document.getElementById('egggplants_id')。值;
var numberKiwis=document.getElementById('kiwis_id')。值;
var numberbanas=document.getElementById('bananas_id')。值;
var输出=”;
var MyArray=新数组(6);
MyArray[0]=numberPotatos;
MyArray[1]=numberBlueberry;
MyArray[2]=numberStrawberry;
MyArray[3]=numberEggplants;
MyArray[4]=numberKiwis;
MyArray[5]=numberbanas;
var MySecondArray=新数组(6);
MySecondArray[0]=6;
MySecondArray[1]=7;
MySecondArray[2]=5;
MySecondArray[3]=22;
MySecondArray[4]=12;
MySecondArray[5]=4;
//更多代码
var总和=0;
对于(var i=0;i
您需要记录项目总数,而不是一项超过5项:

var totalItems = 0;
var discount = 0;
for(var i = 0; i < MyArray.length; i++)
{
    totalItems += MyArray[i];
}

if(totalItems > 5){
    discount = (sum - (sum * 0.10));
    discount = parseFloat(discount);
}
var totalItems=0;
var贴现=0;
对于(var i=0;i5){
折扣=(总和-(总和*0.10));
折扣=浮动(折扣);
}

您需要记录项目总数,而不是一项超过5项:

var totalItems = 0;
var discount = 0;
for(var i = 0; i < MyArray.length; i++)
{
    totalItems += MyArray[i];
}

if(totalItems > 5){
    discount = (sum - (sum * 0.10));
    discount = parseFloat(discount);
}
var totalItems=0;
var贴现=0;
对于(var i=0;i5){
折扣=(总和-(总和*0.10));
折扣=浮动(折扣);
}

问题在于,您只检查了每篇给定文章的5个以上部分:

if(MyArray[i]>5){

不是总文章数,你应该把你从所有不同文章中得到的所有片段相加,所以我建议你这样做:

var sum = 0;
for(var i=0; i< MyArray.length; i++) {
    sum += MyArray [i ]* MySecondArray[i];
}
document.getElementById('test').innerHTML = sum;
var discount = 0;
var totalQuantity = 0;
for(var i=0; i<MyArray.length;i++ ){ 
    totalQuantity += MyArray[i];
}
if(totalQuantity > 5){  
    discount = sum*0.9;
}
document.getElementById('test2').innerHTML = discount;
var总和=0;
对于(var i=0;i
问题在于,您只检查了每篇给定文章的5个以上部分:

if(MyArray[i]>5){

不是总文章数,你应该把你从所有不同文章中得到的所有片段相加,所以我建议你这样做:

var sum = 0;
for(var i=0; i< MyArray.length; i++) {
    sum += MyArray [i ]* MySecondArray[i];
}
document.getElementById('test').innerHTML = sum;
var discount = 0;
var totalQuantity = 0;
for(var i=0; i<MyArray.length;i++ ){ 
    totalQuantity += MyArray[i];
}
if(totalQuantity > 5){  
    discount = sum*0.9;
}
document.getElementById('test2').innerHTML = discount;
var总和=0;
对于(var i=0;i
阅读你自己的问题。你真的希望有人知道你的问题是什么吗?@Marcin It对我来说很有意义。在我们说话的时候摆弄JS。@DannyBeckett“它不起作用”。显然,这是有道理的,因为软件只有一种故障模式。当任何一项的总数小于6时,它将停止工作,因为您只检查单个项是否大于6。只需将
MyArray
中的所有项相加,然后检查其是否大于6。您是否尝试过使用一种称为“调试器”的东西?阅读你自己的问题。你真的希望有人知道你的问题是什么吗?@Marcin这对我来说很有意义。在我们说话的时候摆弄JS。@DannyBeckett“它不起作用”。显然,这是有道理的,因为软件只有一种故障模式。当任何一项的总数小于6时,它将停止工作,因为您只检查单个项是否大于6。只需将
MyArray
中的所有项相加,然后检查其是否大于6。您是否尝试过使用一种称为“调试器”的东西?为什么要复制
discount=parseFloat(discount);
部分?@Bergi计算折扣只是OP的原始代码…我刚刚添加了
var totalItems=0;
totalItems+=MyArray[I];
并将其余逻辑移到
for
循环之外。如果你想给出好的答案,你应该纠正所有错误,而不仅仅是那些被要求的错误:-)很好!!对不起,我的语法不太好,但英语不是我的第一语言抱歉打扰你Danny,我仍然有这个代码的问题。你有没有电子邮件我可以联系你的地址?你为什么要复制
discount=parseFloat(discount);
部分?@Bergi这只是OP计算折扣的原始代码…我刚刚添加了
var totalItems=0;
totalItems+=MyArray[I];
并将其余逻辑移到
for
循环之外。如果你想给出好的答案,你应该纠正所有错误,而不仅仅是那些被要求的错误:-)很好!!对不起,我的语法不太好,但英语不是我的第一语言抱歉打扰你Danny,我仍然有这个代码的问题。你有没有电子邮件我可以联系您的地址?请将第一笔金额分配转移到