Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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 Can';t按需要返回数组_Javascript_Arrays - Fatal编程技术网

Javascript Can';t按需要返回数组

Javascript Can';t按需要返回数组,javascript,arrays,Javascript,Arrays,第一次在StackExchange上。我最近开始编程,因此我正在学习JavaScript。我试图得到一个n大小的数组,其中包含一种随机数,这样我可以稍后尝试排序和搜索算法,并检查什么是有效的 我可能错过了一些非常简单的东西,但是昨天我尝试了这个,我仍然无法理解错误在哪里。我得到一个空数组 我使用的是inquirer 0.12.0 var inquirer = require('inquirer'); // CONSTRUCT ARRAY WITH n SIZE n OF RANDOM NUMB

第一次在StackExchange上。我最近开始编程,因此我正在学习JavaScript。我试图得到一个n大小的数组,其中包含一种随机数,这样我可以稍后尝试排序和搜索算法,并检查什么是有效的

我可能错过了一些非常简单的东西,但是昨天我尝试了这个,我仍然无法理解错误在哪里。我得到一个空数组

我使用的是inquirer 0.12.0

var inquirer = require('inquirer');

// CONSTRUCT ARRAY WITH n SIZE n OF RANDOM NUMBERS
var value;
var limit;

var  questionRandomSize = [{
  type: 'input',
  name: 'randomsize',
  message: 'Input number for maximum random number.',
  validate: function (limit) {
    if (limit > 0) {
      return true;
    } else {
      return 'Input a number if you want to continue.'
    }
  }
}];

var questionArraySize = [{
  type: 'input',
  name: 'arraysize',
  message: 'Input number for array size.',
  validate: function (value) {
    if (value > 0) {
      return true;
    } else {
      return 'Input a number if you want to continue.';
    }
  }
}];

var nArray = new Array();

function arrayI(value) {
  for (i = 0; i < value; i++) {
    nArray.push(randomSize(limit));
    arrayI(value);
  };
}

inquirer.prompt(questionRandomSize, function (limit) {
  function randomSize(limit) {
    return Math.floor(Math.random() * limit);
  }
  inquirer.prompt(questionArraySize, function (value) {
    arrayI(value);
    mainMenu();
  });
});

//MENU
function mainMenu() {
  if (nArray.lenght === value){
    console.log(nArray);
  } else {
    arrayI(value);
  }
}
var inquirer=require('inquirer');
//构造大小为n的随机数数组
var值;
风险价值限额;
变量大小=[{
键入:“输入”,
名称:“随机大小”,
消息:“输入最大随机数的数字。”,
验证:功能(限制){
如果(限制>0){
返回true;
}否则{
返回“如果要继续,请输入一个数字。”
}
}
}];
var questionArraySize=[{
键入:“输入”,
名称:“阵列化”,
消息:“为数组大小输入数字”,
验证:函数(值){
如果(值>0){
返回true;
}否则{
返回“如果要继续,请输入一个数字”;
}
}
}];
var nArray=新数组();
函数(值){
对于(i=0;i

谢谢你的帮助

欢迎来到StackOverflow!看起来您想要生成一个具有指定限制的随机数的特定大小的数组

您的问题不依赖于
查询器
库,请从问题中删除此冗余代码

对于解决方案,请尝试创建一个清晰的函数,返回所需的数组

function make_array(size, limit){

    // Makes an empty array
    var a = [];

    // Does what's inside (size) times
    for(var i = 0; i < size; i++){

        // Generates a random number between 0 and (limit)
        // Pushes into the array.
        a.push(Math.floor(Math.random() * (limit + 1)));

    }

    // Returns the array
    return a;

}
以您想要的任何方式获取
size
limit
。从输入字段或输入框中。
祝你好运

您的代码中有很多错误,我在这里创建了一个工作版本:

var inquirer = require('inquirer');

var questionRandomSize = [{
    type: 'input',
    name: 'randomsize',
    message: 'Input number for maximum random number.',
    validate: function (limit) {
        if (limit > 0) {
            return true;
        } else {
            return 'Input a number if you want to continue.'
        }
    }
}];

var questionArraySize = [{
    type: 'input',
    name: 'arraysize',
    message: 'Input number for array size.',
    validate: function (value) {
        if (value > 0) {
            return true;
        } else {
            return 'Input a number if you want to continue.';
        }
    }
}];

var nArray = [];

function arrayI(limit, size) {
    for (var i = 0; i < size; i++) {
        nArray.push(randomSize(limit));
    }
}

function randomSize(limit) {
    return Math.floor(Math.random() * limit);
}

inquirer.prompt(questionRandomSize, function (limit) {
    inquirer.prompt(questionArraySize, function (size) {
        arrayI(limit.randomsize, size.arraysize);
        mainMenu();
    });
});

//MENU
function mainMenu() {
    console.log('array', nArray);
}
我修复了一些错误:

  • 假设
    提示符
    的返回值是用户输入的值,但它实际上是一个包含该值作为属性的对象
  • 您的
    randomSize
    函数在回调函数的作用域内,因此您的
    arrayI
    函数无法访问
  • arrayI
    函数中,递归调用
    arrayI
    函数,这没有任何意义
其他说明:

  • 您应该使用
    []
    创建数组,而不是
    新建数组()
  • 始终确保使用
    var
    let
    const
    定义变量,即使它只是for循环中的
    i
  • 您使用的是过期版本的
    查询器
    (0.12.0);让您的节点模块保持最新始终是一个好主意;最新版本使用了而不是回调函数,这使得处理获取用户输入的异步特性更加容易

首先,有一个输入错误:
nArray.lengh
→ 应该是
nArray.length
为什么要使用这个旧版本的inquirer?我刚才在javascript挑战中使用过。这就是为什么。:)他用的是查询器0.12.0。在这个旧版本中,inquirer.prompt接受回调作为第二个参数@joão-faustino,我应该更新代码示例以使用旧的inquirer,还是使用当前版本对您可行?您好,谢谢您的帮助。如果你能更新,我会非常感激。现在只使用这个旧版本,因为这是我不久前在一次挑战中使用的@帕特里克亨特非常感谢你的帮助!完成了,谢谢你告诉我,因为这里很新,还在搞清楚事情!
var inquirer = require('inquirer');

var questionRandomSize = [{
    type: 'input',
    name: 'randomsize',
    message: 'Input number for maximum random number.',
    validate: function (limit) {
        if (limit > 0) {
            return true;
        } else {
            return 'Input a number if you want to continue.'
        }
    }
}];

var questionArraySize = [{
    type: 'input',
    name: 'arraysize',
    message: 'Input number for array size.',
    validate: function (value) {
        if (value > 0) {
            return true;
        } else {
            return 'Input a number if you want to continue.';
        }
    }
}];

var nArray = [];

function arrayI(limit, size) {
    for (var i = 0; i < size; i++) {
        nArray.push(randomSize(limit));
    }
}

function randomSize(limit) {
    return Math.floor(Math.random() * limit);
}

inquirer.prompt(questionRandomSize, function (limit) {
    inquirer.prompt(questionArraySize, function (size) {
        arrayI(limit.randomsize, size.arraysize);
        mainMenu();
    });
});

//MENU
function mainMenu() {
    console.log('array', nArray);
}
? Input number for maximum random number. 2
? Input number for array size. 4
array [ 0, 1, 0, 1 ]