I am currently available for freelance/contract work. Book a meeting so we can talk about your project.

Counting all array elements that match a condition

Posted on

Want to know how many elements in an array match a condition? We can use this to count all elements in an array that return true for a function that checks this condition.

// takes an array and a function to check each element in the array against
const countBy = (array, checkFunction) => {
  return array.reduce((count, element) => {
    return checkFunction(element) ? count + 1 : count
  }, 0)
}
 
// we can count how many numbers in an array are smaller than a given limit
countBy([-4, 3, -7, 5, 0, -3, 1, -8], number => number < 0)
// ⇒ 4
 
// we can count how many strings are exactly four characters long
countBy(["John", "Paul", "George", "Ringo"], name => name.length === 4)
// ⇒ 2
 
// we can also check if objects have a certain value in a property
countBy([
  {
    name: "Bulbasaur",
    types: ["Grass", "Poison"]
  }, {
    name: "Nidoqueen",
    types: ["Poison", "Ground"]
  }, {
    name: "Abra",
    types: ["Psychic"]
  }, {
    name: "Tentacool",
    types: ["Water", "Poison"]
  }
], pokemon => pokemon.types.includes("Poison"))
// ⇒ 3
// takes an array and a function to check each element in the array against
const countBy = (array, checkFunction) => {
  return array.reduce((count, element) => {
    return checkFunction(element) ? count + 1 : count
  }, 0)
}
 
// we can count how many numbers in an array are smaller than a given limit
countBy([-4, 3, -7, 5, 0, -3, 1, -8], number => number < 0)
// ⇒ 4
 
// we can count how many strings are exactly four characters long
countBy(["John", "Paul", "George", "Ringo"], name => name.length === 4)
// ⇒ 2
 
// we can also check if objects have a certain value in a property
countBy([
  {
    name: "Bulbasaur",
    types: ["Grass", "Poison"]
  }, {
    name: "Nidoqueen",
    types: ["Poison", "Ground"]
  }, {
    name: "Abra",
    types: ["Psychic"]
  }, {
    name: "Tentacool",
    types: ["Water", "Poison"]
  }
], pokemon => pokemon.types.includes("Poison"))
// ⇒ 3
Debug
none
Grid overlay