我真的是 JavaScript 的新手,我被困在一个给我的练习上。我正在使用 TextPad,因为这是我被要求用于此练习的内容。
基本上我需要有一个输入参数,它是一个数字/整数,然后有 12 个输出参数,显示输入已除以 12,并且每个输出参数的值不超过前一个或下一个大于 1.
到目前为止,我已经使用数组和 for 循环编写了以下代码,但我只是不知道如何或如何获取输出参数以显示数组的每个值均分。
var amount = "30";
var camels = ["cam1", "cam2", "cam3", "cam4", "cam5", "cam6", "cam7", "cam8", "cam9", "cam10", "cam11", "cam12"]
for(i=0;i<camels.length;i++){
WScript.echo(camels[i] + "|" + amount/12);
}
for(i=1; i<13; i++){
n = Math.random();
o = n * 12;
p = o + 1;
q = Math.floor(p);
}
这真的让我很困惑,所以任何帮助将不胜感激,但请记住我是一个完全的新手。
最佳答案
这是一道家庭作业题,如果您获得完整的解决方案,您将一无所获(除了您可能不配得到的 A!)
相反,我可以给你一些建议,希望能帮助你找到正确的答案。
首先要注意的是,在进行数学计算时,您希望处理数字,因此请适当更改第一行
var amount = 30;
(请注意,如果您让用户输入此数字,您需要确保其为数字并将其转换为数字 - 用户输入几乎总是字符串。使用 parseInt(<user input>,10)
)。
要做的第二件事是将您的金额除以 12。使用 Math.floor
为该数字取底得到一个整数。在这个例子中你会得到 24
.
(考虑上述内容的另一种方法是研究模运算符 %
,它可以代替使用)
此时您可以创建一个包含 12 个元素(每个 Camel 一个)的数组,每个元素的计数应为 2(每个元素代表 2 件 cargo )。 (见引用文献 1)
在这个例子中,您将得到 6
的剩余部分剩下要做的就是分发剩余的 6
随机在你的 Camel 中。
您可以通过将所有 12 只 Camel 放入一个数组中来实现此目的,循环 6
(或者,无论您的余数是多少)次并在 0
之间选择一个随机数和 {length of camel array}-1
.将该 cargo 分配给选定的 Camel ,并从 Camel 阵列中删除该 Camel 。这确保了没有一头 Camel 会被随机分配超过一件的额外 cargo 。
与一般的编程一样,最后一点应该分解为单独的可管理步骤。
- 创建一个包含 12 个元素的数组(其中 12 是 Camel 的数量)。这个数组的元素应该是数字 0-11 代表前面数组中的索引
- 创建一个循环,为每个余数重复一次以下代码
- 循环内部:
- 在 0 和在 1 中创建的数组的长度之间选择一个随机数(参见 ref2)。
- 使用该随机数增加先前创建的数组中的计数
- 从 1 中创建的数组中删除元素。
不要混淆;这里有 2 个数组。一个是您之前创建的 - 它有 12 个元素并跟踪每只 Camel 上的 cargo 数量,另一个是临时的,用于跟踪哪只 Camel 被分配了“额外” cargo 。前者永远不会改变长度,而后者会随着 Camel 分配额外的 cargo 而变小。
引用资料:
- ref1: arrays
- ref2:
Math.random
- ref3:removing a specific element from an array
关于javascript - 将 JavaScript 用于数组和循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254474/