我目前在一個JavaScript崩潰的過程中,我目前卡在一塊代碼。您將在makeCountingFunction函數中看到我的評論,以查看im邏輯的進展情況。任何人都可以幫助澄清是怎麼回事?Javascript:計數奇數的數量
代碼中包含教師評論。
/**
*
* 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(函數(項目){'你此行的分析是不正確你是在'list'的每一個人'item'調用該函數,而不是返回一個函數 –
我認爲你需要一些解釋,所以哪一部分模糊? –
我在控制檯中運行了你的代碼,它工作正常,問題是什麼? –