簡體   English   中英

Javascript:計算奇數數量

[英]Javascript: Counting the amount of odd numbers

我目前正在使用JavaScript速成班,並且目前停留在一段代碼上。 您將在makeCountingFunction函數中看到我的評論,以查看im邏輯的去向。 任何人都可以幫助澄清發生了什么嗎?

守則中包括老師的評論。

/**
 *
 * Independent Practice: Functions and Callbacks
 *
 * GOALS
 *
 * Your goal in this exercise is for the last line of code in this file to log
 * the number of odd numbers in the array.
 *
 * DIRECTIONS
 *
 * Implement 'makeCountingFunction()', so that it accepts a predicate function
 * as an argument. 'makeCountingFunction()' should return an anonymous function
 * that is able to:
 *
 *  1. iterate through an array and apply the predicate function to each item in
 *     that array,
 *  2. increment a counter based on the result of applying the predicate function
 *     to that item (i.e. does it match what we're looking for?)
 *  3. return the final count.
 *
 * The predicate function 'isOdd()' should accept an individual number as a
 * parameter and return whether or not that number is odd.
 *
 * BONUS 1: Can you write another predicate function that counts evens?
 * BONUS 2: Can you write a function that will return the sum of all numbers?
 *
 */

 function makeCountingFunction(predicate) {     //delcare the function with the parameter predicate
   return function(list) {                     // this returns a second function with the parameter list
      var count = 0;                               // a variable count is declared with the value of 0
      list.forEach(function(item) {               //this states that for each item of the paramter the code needs to return a third function that has a parameter called item
        if (predicate(item)) {                   // this declares that if the parameter predicate.... has something to do with item???? this is where im lost
         count++;                              // the variable count increments by 1
   }
 })
 return count;                           // returns the value of count. This gives up the number of odd integers.
   };
 }

function isOdd(a) {
  return (a % 2) !== 0
}

//     =============================================================================
// The code below should work without modification.
//     =============================================================================

/**
 * The line below should package up 'makeCountingFunction()' and 'isOdd()' into
 * a single function that accepts an array of items as a parameter, iterates
 * through it and returns a count of how many of those items are odd numbers.
 * This new function is being assigned to the variable 'countTheOdds'.
 */

var countTheOdds = makeCountingFunction(isOdd);

/**
 * The final line below calls our new 'countTheOdds()' function and passes in an
 * array of numbers. Once your code is working, the line below should return the
 * number 4.
 */

var oddCount = countTheOdds([1, 2, 3, 4, 5, 6, 7]);
console.log('There are ' + oddCount + ' odd numbers.');
// expected output: There are 4 odd numbers.

list.forEach(function(item) {您對此行的分析是不正確的。您正在調用list每個item上的函數,而不是返回函數。在下一行表示丟失的行中,請記住predicate是一個函數 ,在這種情況下,如果謂詞函數對list item返回true,則增加計數器。

看來您的工作是編寫有問題的謂詞函數,對偶數返回true,對偶數返回false,然后在其上調用提供的函數,使用該返回的函數並用數字列表進行調用以驗證其是否有效:

makeCountingFunction(thePredicateYouWrite)([1,2,3,4,5]); // should be 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM