【问题标题】:Filtering Arrays in JavaScript using Callback Functions使用回调函数过滤 JavaScript 中的数组
【发布时间】:2021-10-15 18:14:31
【问题描述】:

问题是:

“在标有“在此处添加代码”的地方为函数 func1 和 func2 添加代码,以实现所需的控制台日志。”

function filterArray(array, callback) {
  const newArray = [];
  for (let i = 0; i < array.length; i += 1) {
    if (callback(array[i])) newArray.push(array[i]);
  }
  return newArray;
}
const arrOfNums = [1, 2, 3, 4, 5];
function func1(num) {
  // ADD CODE HERE

}
function func2(num) {
  // ADD CODE HERE

}

 console.log(filterArray(arrOfNums, func1)); // should log: [2, 4]
 console.log(filterArray(arrOfNums, func2)); // should log: [1, 3, 5]

在func1中我试过了:

  if (num % 2 === 0) {
    num = num;
  } else {
    num = null;
  }

在func2中我试过了:

  if (num % 2 !== 0) {
    num = num;
  } else {
    num = null;
  }

我不确定如何解决这个问题。我的解决方案不起作用,并且 console.log 调用都返回了空数组...

提前谢谢你!

【问题讨论】:

  • 除了filter 的回调函数必须为每个值返回一个布尔值之外,您的函数不会返回任何内容。
  • 谢谢。我会尝试多玩一点......

标签: javascript arrays callback


【解决方案1】:

回调函数需要返回一个布尔值,如果为true,则filterArray函数将元素添加到数组中。

if (callback(array[i])) newArray.push(array[i]);

所以这一行只有在 callback(array[i]) 返回值为 true 时才调用 newArray.push(array[i])。

解决方案:

function func1(num) {  
   return (num % 2 === 0);
}

function func2(num) {
   return (num % 2 !== 0);
}

【讨论】:

  • 感谢您帮助我理解它需要一个布尔值!
【解决方案2】:

除了filter 的回调函数必须为每个值返回一个布尔值之外,您的函数不会返回任何内容。

你可以使用

return num % 2 === 0;

分别

return num % 2 !== 0;

【讨论】:

  • 谢谢。就是这么简单哈哈!感谢您帮助我了解它需要一个布尔值!
【解决方案3】:

你需要返回真/假

function filterArray(array, callback) {
  const newArray = [];
  for (let i = 0; i < array.length; i += 1) {
    if (callback(array[i])) newArray.push(array[i]);
  }
  return newArray;
}
const arrOfNums = [1, 2, 3, 4, 5];
function func1(num) {
  // return num % 2 === 0;
  if (num % 2 === 0) {
   return true;
  } else {
    return false;
  }

}
function func2(num) {
  // return num % 2 !== 0;
  if (num % 2 !== 0) {
    return true;
  } else {
    return false;
  }

}

 console.log(filterArray(arrOfNums, func1)); // should log: [2, 4]
 console.log(filterArray(arrOfNums, func2)); // should log: [1, 3, 5]

【讨论】:

  • 感谢您抽出宝贵时间提供帮助!我很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 2019-01-22
  • 2016-01-26
相关资源
最近更新 更多