首页 > 解决方案 > Javascript 查询(Callback 和 forEach)

问题描述

因此,我尝试使用 forEach 编写一个名为 count(arr, callback) 的函数。

理论上,它应该返回回调为真的元素的数量。

count([1, 2, 3, 4], (e) => e === 3)

预期:1 但得到:0

count([1, 2, 3, 4], (e) => e > 1)

预期:3 但得到:0

count([2, 1, 4, 5, 2, 8], (e) => e === 2)

预期:2 但得到:0

这是我正在运行的代码:

function count(arr, callback) {
  let values = 0;
  arr.forEach(callback) ? values++ : values;

  return values;
}

标签: javascriptcallbackconditional-operator

解决方案


使用filter

const count = (arr, c) => arr.filter(c).length;

console.log(count([1, 2, 3, 4], (e) => e === 3))
console.log(count([1, 2, 3, 4], (e) => e > 1))
console.log(count([2, 1, 4, 5, 2, 8], (e) => e === 2))


推荐阅读