简体   繁体   English

如何修复此代码? 它使用 3 个单独的函数,一个用于添加到数组,一个用于排序,一个用于显示。 Javascript

[英]How do I fix this code? It's use 3 seperate functions one to add to the array, one to sort and one to display. Javascript

I'm doing a question that asks: Read 10 numbers and print the biggest number from the list of reading numbers.我正在做一个问题:读取 10 个数字并打印读取数字列表中的最大数字。 Make use of Array and Functions.使用数组和函数。 One Function to read the integer numbers and another function to print the biggest number from the list.一个函数读取整数,另一个函数打印列表中的最大数字。 I'm having trouble with getting the biggest number and returning it back to the code so that I can display it.我在获取最大数字并将其返回到代码中时遇到了麻烦,以便我可以显示它。 I've messed around with it allot so it might not make as much sense right now (I'm sorry).我已经弄乱了它的分配,所以它现在可能没有多大意义(对不起)。 I've been stuck on it forever any help would be much appreciated :).我一直坚持下去,任何帮助将不胜感激:)。

var numbers = [];
var BiggestNumber = 0;

BigestNumber = BiggestSort(numbers);
numbers = ReadNumbers();
Display(BiggestNumber)

function ReadNumbers() {
   var ArgNumbers = [];
   var ArgInput;
   var ctr;

   for (ctr = 0; ctr < 3; ctr++) {
      ArgInput = parseFloat(prompt("Please enter a number: "));
      ArgNumbers.push(ArgInput);
   }
   return ArgNumbers;
}

function BiggestSort(ArgNumber) {
   var ArgNumber = [];
   var ArgBiggest = 0;
   var ctr;

   for (ctr = 0; ctr < 3; ctr++)
      if (ArgNumber[ctr] > ArgBiggest) {
         ArgBiggest = ArgNumber[ctr];
      }
   return ArgBiggest;
}

function Display(ArgNumber) {
   alert("The biggest number was: " + ArgNumber);
}

I've added a snippet at the end that demonstrates how I might do such a thing from scratch, but let's look at your code first:我在最后添加了一个片段来演示我如何从头开始做这样的事情,但让我们先看看你的代码:

From the top:从一开始:

There's no need to declare numbers and BiggestNumber with initial values and then immediately reassign them.无需使用初始值声明numbersBiggestNumber ,然后立即重新分配它们。 Declare them at assignment time:在分配时间声明它们:

// var numbers = [];
// var BiggestNumber = 0;

const BigestNumber = BiggestSort(numbers);
const numbers = ReadNumbers();

There's a typo in BigestNumber (missing second 'g'): BigestNumber有一个错字(缺少第二个“g”):

// const BigestNumber = BiggestSort(numbers);
const BiggestNumber = BiggestSort(numbers);
const numbers = ReadNumbers();

You're calling BiggestSort(numbers) before numbers has a meaningful value.您在numbers具有有意义的值之前调用BiggestSort(numbers) Call ReadNumbers() first to initialize numbers , then pass it to BiggestSort :首先调用ReadNumbers()初始化numbers ,然后将其传递给BiggestSort

// const BiggestNumber = BiggestSort(numbers);
// const numbers = ReadNumbers();

const numbers = ReadNumbers();
const BiggestNumber = BiggestSort(numbers);

Again, no need to declare ArgInput and ctr separately.同样,无需分别声明ArgInputctr It doesn't really hurt anything, but it's unnecessary:它并没有真正伤害任何东西,但它是不必要的:

function ReadNumbers() {
    const ArgNumbers = [];
//   var ArgInput;
//   var ctr;

   for (let ctr = 0; ctr < 3; ctr++) {
      const ArgInput = parseFloat(prompt("Please enter a number: "));
      ArgNumbers.push(ArgInput);
   }
   return ArgNumbers;
}

You're receiving an ArgNumber parameter, and then declaring another variable with the same name.您收到一个ArgNumber参数,然后声明另一个具有相同名称的变量。 Use the argument passed in.使用传入的参数。

Because the ArgNumber parameter is an array, you can use its length property in the loop condition instead of hard-coding 3.由于ArgNumber参数是一个数组,因此您可以在循环条件中使用其length属性,而不是硬编码 3。

You're missing curly braces around your loop body.你的循环体周围缺少花括号。

function BiggestSort(ArgNumber) {
//   var ArgNumber = [];
     let ArgBiggest = 0;
//   var ctr;

//   for (ctr = 0; ctr < 3; ctr++)
   for (let ctr = 0; ctr < ArgNumber.length; ctr++) { // added curly brace
      if (ArgNumber[ctr] > ArgBiggest) {
         ArgBiggest = ArgNumber[ctr];
      }
   } // added closing brace
   return ArgBiggest;
}

With the changes described above, it works:通过上述更改,它可以工作:

 const numbers = ReadNumbers(); const BiggestNumber = BiggestSort(numbers); Display(BiggestNumber); function ReadNumbers() { const ArgNumbers = []; for (let ctr = 0; ctr < 3; ctr++) { const ArgInput = parseFloat(prompt("Please enter a number: ")); ArgNumbers.push(ArgInput); } return ArgNumbers; } function BiggestSort(ArgNumber) { let ArgBiggest = 0; for (let ctr = 0; ctr < ArgNumber.length; ctr++) { if (ArgNumber[ctr] > ArgBiggest) { ArgBiggest = ArgNumber[ctr]; } } return ArgBiggest; } function Display(ArgNumber) { alert("The biggest number was: " + ArgNumber); }

Consider this approach:考虑这种方法:

 // A function to prompt for a series of numbers: // The 'count' parameter is how many numbers to prompt for. // The 'previous' parameter is an array of the numbers already entered, initally empty. function readNumbers (count, previous = []) { // if count is zero, we're done. return the already entered numbers. if (count === 0) { return previous; } // prompt for the next number const number = parseFloat(prompt('Enter a number: ')); // push the new number onto the end of the list previous.push(number); // call readNumbers again, subtracting one from 'count' // and return whatever it returns. return readNumbers(count - 1, previous); } // invoke readNumbers to prompt the user. const numbers = readNumbers(3); // use Math.max to find the largest number const largest = Math.max(...numbers); // show the result alert(`The biggest number was ${largest}`);

Correct typos like BigestNumber and BiggestNumber .更正诸如BigestNumberBiggestNumber类的拼写错误。

do ReadNumbers before BiggestSort method call.在调用BiggestSort方法之前执行ReadNumbers

remove\\avoid reassigning to parameters\\args you pass into method scopes, ie ArgNumber in the BiggestSort method.除去\\避免重新分配给你传递到方法范围参数\\指定参数时,即ArgNumberBiggestSort方法。

 var numbers = []; numbers = ReadNumbers(3); BiggestNumber = BiggestSort(numbers); Display(BiggestNumber) function ReadNumbers(numberToRead) { var ArgNumbers = []; var ArgInput; for (var ctr = 0; ctr < numberToRead; ctr++) { ArgInput = parseFloat(prompt("Please enter a number: ")); ArgNumbers.push(ArgInput); } return ArgNumbers; } function BiggestSort(ArgNumber) { var ArgBiggest = 0; for (var ctr = 0, max = ArgNumber.length; ctr < max; ctr++) if (ArgNumber[ctr] > ArgBiggest) { ArgBiggest = ArgNumber[ctr]; } return ArgBiggest; } function Display(ArgNumber) { alert("The biggest number was: " + ArgNumber); }

I also passed in the number of loops ( numberToRead ) and ensure the loop in BiggestSort uses the length of the passed array ( ArgNumber ).我还传入了循环数 ( numberToRead ) 并确保BiggestSort的循环使用传递数组的长度 ( ArgNumber )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何修复我的代码以显示一个表格? - how do I fix my code in order to display one table? 如何按另一个数组中的相应值对一个数组进行排序? - How do I sort one array by the corresponding values in another array? 如何使用 JavaScript 等待单击一个页面,然后将存储在带有对象的数组中的数据显示在另一页上 - how can I use JavaScript to wait for a click on one page then take data stored in an array with objects to display it's content on another page 如何在JavaScript中对数组进行排序,确保一个元素位于顶部? - How do I sort an array in JavaScript, ensuring one element goes to the top? 如何修复仅运行 function 一部分的代码? - How do I fix code only running one part of a function? JavaScript / jQuery:一个ID,两个功能。 如何以最少的代码重复做到这一点? - JavaScript/jQuery : One ID, two functions. How can I do this with minimal code duplication? 如何根据其内容之一对数组进行排序 - How do i sort an array based on one of its contents 一次搜索并显示多个单词。 在PHP中 - Get many words in one search and display. in PHP 如何使用 array.push() 方法,以便将数据从一个组件推送到单独文件中的数组中? - How do I can I use the array.push() method, so I can push data from one component into an array in a seperate file? 如何在 Vue.JS 中显示数组的一个对象 - How do I display one object of an array in Vue.JS
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM