我需要制作第三个累加器来保存while循环中的项类型吗

Do I need to make a third accumulator for saving the item types in this while-loop?

本文关键字:循环 while 保存 类型 累加器 三个      更新时间:2024-01-10

all首先,希望大家有一个伟大的感恩节。其次,我不知道该怎么做。我需要为婚礼策划人写一个程序。他们希望为每对夫妇建立一个礼物登记处。他们希望根据送礼者是新娘还是新郎来细分礼物。他们也知道特定的礼物(烤面包机、银器和干餐具)往往会重复,所以他们希望列出这些礼物,并在下面写上送礼者的名字。重复的礼物只是客户告诉你的礼物(烤面包机、银器和干餐具),他们不想让你确定哪些礼物重复,他们只是在寻找这三种特定的礼物。

因此,我的输出应该显示为:新郎侧:汤姆:烤面包机2.账单:银器3.鲍勃:餐具4.史蒂夫:雷克萨斯

新娘侧:1.吉尔:烤面包机2.苏西:银器3.专利:干器具4.卡伦:马

多台烤面包机:汤姆Jill

但是,这与我所编码的内容不一致,并且处于困境。我也不知道如何制作第三个累加器(我想我必须制作它来存储不同类型的礼物?)我应该朝哪个方向输入都很棒。

代码:

<script type="text/javascript">
<!--
//Assumptions
var brideCounter = 0;
var groomCounter = 0;
var gift, sideOfFamily, groomAccum, brideAccum;
var giftBride, giftGroom,multipleItems;
//initializing loop
var registry = "yes";
//Start Looping
while (registry == "yes")
{
 name = prompt("What is your name?","");
 sideOfFamily = prompt("Which side of the family are you on? bride or groom","");
            if (sideOfFamily == "groom")
            {
            giftGroom = prompt("What type of gift do you have?","");
            groomCounter= groomCounter + 1;
                    if (groomCounter = 1)
                    {
                    groomAccum = "Groom Side:<br>" + groomCounter + ". " + name+ ": " + giftGroom;
                    }
                    else
                    {
                    groomAccum = groomAccum + ", " + groomCounter + ". " + name + ": " + giftGroom;
                    }
                alert(groomAccum);
            }
            else
            {
            giftBride = prompt("What type of gift do you have?","");
            brideCounter = brideCounter + 1;
                    if (brideCounter = 1)
                    {
                    brideAccum =    "Bride Side: " + brideCounter + ". " + name + ": " + giftBride;
                    }
                    else
                    {
                    brideAccum = brideAccum + ", " + brideCounter + ". " + name  + ": " + giftBride;
                    }
                alert(brideAccum);
                }
                registry = prompt("Are you registering for the wedding gifts?","");
}
//Output
document.write(groomAccum + brideAccum);
document.write(multipleItems);

// -->
</script>

您的问题是使用赋值运算符(=)而不是比较运算符(=====)。

最好使用===,它比==快,如果你忘记了一个,代码也可以工作。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators有关比较运算符的完整信息。

我还清理了你的代码。

演示

//Assumptions
var keys = ['groom','bride'],
    counter = {bride: 0, groom: 0},
    gift = {},
    accum = {bride: '', groom: ''},
    sideOfFamily;
//initializing loop
var registry = true;
//Start Looping
while (registry)
{
    name = prompt("What is your name?","");
    do {
        sideOfFamily = (prompt("Which side of the family are you on? bride or groom", keys[Math.random()*2 | 0]) || '').toLowerCase();
    } while (keys.indexOf(sideOfFamily) === -1);
    gift[sideOfFamily] = prompt("What type of gift do you have?","");
    if(++counter[sideOfFamily] === 1) {
        accum[sideOfFamily] = sideOfFamily[0].toUpperCase() + sideOfFamily.substring(1) + " Side:'n";
    } else {
        accum[sideOfFamily] += ", ";
    }
    accum[sideOfFamily] += counter[sideOfFamily] + ". " + name + ": " + gift[sideOfFamily];
    alert(accum[sideOfFamily]);
    registry = confirm("Are you registering for the wedding gifts?");
}
//Output
output.innerHTML = '';
output.appendChild(
    document.createTextNode(accum.groom + ''n'n' + accum.bride)
);

如果您想支持不支持indexOf的旧浏览器,请使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Compatibility