Javascript Can';t按需要返回数组
第一次在StackExchange上。我最近开始编程,因此我正在学习JavaScript。我试图得到一个n大小的数组,其中包含一种随机数,这样我可以稍后尝试排序和搜索算法,并检查什么是有效的 我可能错过了一些非常简单的东西,但是昨天我尝试了这个,我仍然无法理解错误在哪里。我得到一个空数组 我使用的是inquirer 0.12.0Javascript 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
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
定义变量,即使它只是for循环中的const
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 ]