Back to all solutions

#1773 - Count Items Matching a Rule

Problem Description

You are given an array items, where each items[i] = [typei, colori, namei] describes the type, color, and name of the ith item. You are also given a rule represented by two strings, ruleKey and ruleValue.

The ith item is said to match the rule if one of the following is true:

  • ruleKey == "type" and ruleValue == typei.
  • ruleKey == "color" and ruleValue == colori.
  • ruleKey == "name" and ruleValue == namei.

Return the number of items that match the given rule.

Solution

/**
 * @param {string[][]} items
 * @param {string} ruleKey
 * @param {string} ruleValue
 * @return {number}
 */
var countMatches = function(items, ruleKey, ruleValue) {
  const keyIndex = { type: 0, color: 1, name: 2 };
  let result = 0;

  for (const item of items) {
    if (item[keyIndex[ruleKey]] === ruleValue) {
      result++;
    }
  }

  return result;
};