Javascript - 为什么我的回电不起作用?我得到一个空数组而不是偶数数组

Javascript - Why isn't my call back working? I'm getting an empty array instead of array of even numbers

我正在尝试使用回调来过滤数组,其中 returns 只有偶数, 但是我得到 [] 空数组作为输出,我肯定想使用 isEvenOrOdd

enter code here
//Defining an array
let numbers = [1,2,3,4,5,6,7,8,9];

//Define callback function isEvenOrOdd; Making use of this function is mandatory
function isEvenOrOdd(x){
  // let x;
  (x) => (x % 2 === 0)
  console.log(x % 2);
}

//Call callback function in main function filter
function filterNumbers(array, callback){
  return array.filter(callback);
  // console.log(callback)
}

//Displays only even numbers
filterNumbers(numbers, isEvenOrOdd);
let numbers = [1,2,3,4,5,6,7,8,9];

function isEvenOrOdd(x){
   console.log(x % 2);
  return (x % 2) === 0
 
}

function filterNumbers(array, callback){
  return array.filter(callback);
}

filterNumbers(numbers, isEvenOrOdd);

我已修复您的代码。 在查看结果代码之前,您必须阅读 this link

A notice:

  • Array filter is return a array as result.
  • Array filter need a boolean return inside callback function. TRUE is keep value, and FALSE is remove value.

** 你的错误是把console.log写错了地方,没搞清楚array filter需要做什么。

//Defining an array
let numbers = [1,2,3,4,5,6,7,8,9];

//Define callback function isEvenOrOdd; Making use of this function is mandatory
function isEvenOrOdd(x){
  // let x;
  return x % 2 === 0;
}

//Call callback function in main function filter
function filterNumbers(array, callback){
  return array.filter(callback);
  // console.log(callback)
}

//Displays only even numbers
var r = filterNumbers(numbers, isEvenOrOdd);
console.log(r);

您必须从 isEvenOrOdd 函数中 return true/false 才能得到结果

let numbers = [1,2,3,4,5,6,7,8,9];

function isEvenOrOdd(x){
  return (x % 2 === 0)
}

//Call callback function in main function filter
function filterNumbers(array, callback){
  return array.filter(callback);
}

//Displays only even numbers
const result = filterNumbers(numbers, isEvenOrOdd);
console.log(result)

let numbers = [1,2,3,4,5,6,7,8,9];
let evenNumbers = [];

function isEvenOrOdd(x){
  return x % 2 == 0;
}

function filterNumbers(array, callback){
  return array.filter(callback);
}

evenNumbers = filterNumbers(numbers, isEvenOrOdd);

console.log(evenNumbers);