我的代码如下:
function List(max, min, numLists, numItems) {
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function () {
var fullArray = [];
var completeArray = [];
for (i = this.min; i < this.max; i++) {
fullArray.push(i);
}
for (i = 0; i < numItems; i++) {
var randomItem = Math.floor(Math.random() * (1 + (this.max - this.min)));
completeArray.push(fullArray[randomItem]);
}
console.log(completeArray);
}
}
var newList = new List(12, 100, 1, 15);
newList.generateLists();
&#13;
代码应该在最小值和最大值之间打印一个随机数字列表。我得到一个包含15个值的数组,但它们都是未定义的。我猜这意味着我的第一个&#39; for&#39;环?
如果有人对我如何做得更好有任何建议请批评!
提前致谢。
答案 0 :(得分:1)
您的参数列表中混有min
和max
。这会导致数字的边界不可能(大于100但小于12)。只需将第一行中的参数从max,min
交换为min,max
。
function List(min,max,numLists,numItems){
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function (){
var fullArray = [];
var completeArray = [];
for ( i = this.min ; i<this.max ; i++) {
fullArray.push(i);
}
for ( i = 0 ; i<numItems ; i++) {
var randomItem = Math.floor(Math.random() * (1+(this.max-this.min)));
completeArray.push(fullArray[randomItem]);
}
console.log(completeArray);
}
}
var newList = new List ( 12 , 100 , 1,15);
newList.generateLists();
答案 1 :(得分:1)
我认为您在启动newList
时会交换max和min的位置。
将行更改为:
var newList = new List ( 100, 12 , 1,15);
然后它应该可以正常工作。
答案 2 :(得分:0)
你正在推动什么都没有的fullArray[randomItem]
。它永远不会被初始化
function List(max, min, numLists, numItems) {
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function() {
var completeArray = [];
for (i = 0; i < numItems; i++) {
var randomItem = Math.floor(Math.random() * (1 + (this.max - this.min)));
completeArray.push(randomItem);
}
document.write(completeArray);
}
}
var newList = new List(12, 100, 1, 15);
newList.generateLists();
&#13;
答案 3 :(得分:0)
我想也许你的最大和最小论点都是错误的顺序。您尝试使用负索引访问fullArray
,因为从较小的索引中减去较大的数字。
function List(min,max,numLists,numItems){
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function (){
var fullArray = [];
var completeArray = [];
for ( i = this.min ; i<this.max ; i++) {
fullArray.push(i);
}
for ( i = 0 ; i<numItems ; i++) {
var randomItem = Math.floor(Math.random() * (1+(this.max-this.min)));
console.log(randomItem)
completeArray.push(fullArray[randomItem]);
}
console.log(completeArray);
}
}
var newList = new List ( 12 , 100 , 1,15);
newList.generateLists();
答案 4 :(得分:0)
我认为max和min参数是交换的
这个
function List(max,min,numLists,numItems){
应该是
function List(min,max,numLists,numItems){
答案 5 :(得分:0)
只需替换此行;
var randomItem = Math.floor(Math.random() * (1+(this.max-this.min)));
用;
var randomItem = Math.floor(Math.random()*(fullArray.length)+1);