1773. 统计匹配检索规则的物品数量|刷题打卡

393 阅读1分钟

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位

一、题目描述

本题来自1773. 统计匹配检索规则的物品数量

image.png

二、思路分析

把ruleKey映射为数组下标0,1,2,匹配、遍历。

三、AC代码

  1. forEach()
var countMatches = function(items, ruleKey, ruleValue) {
    let ruleKeyMap = {
        type: 0,
        color: 1,
        name: 2
    };
    let num = 0;
    items.forEach((item, index) => {
        if (item[ruleKeyMap[ruleKey]] === ruleValue) {
            num++;
        }
    });
    return num;
};

2.reduce()

var countMatches = function(items, ruleKey, ruleValue) {
    const map = {
        type: 0,
        color: 1,
        name: 2,
    }
    return items.reduce((acc, curr) => {
        if(curr[map[ruleKey]] === ruleValue) {
            acc ++;
        }
        return acc;
    },0)
};

3.filter()

var countMatches = function(items, ruleKey, ruleValue) {
      let index = { type: 0, color: 1, name: 2 }[ruleKey];
      return items.filter(item => item[index] === ruleValue).length;
};

4.map()

var countMatches = function(items, ruleKey, ruleValue) {
    let num = 0
    items.map(item => {
        (item[0] == ruleValue && ruleKey == 'type') ||
        (item[1] == ruleValue && ruleKey == 'color') ||
        (item[2] == ruleValue && ruleKey == 'name') ? num++ : num
    })
    return num
};

5.Map()

var countMatches = function(items, ruleKey, ruleValue) {
    const map = new Map();
    items.forEach(([type,color,name])=>{
        map.has(eval(ruleKey)) ? map.set(eval(ruleKey),map.get(eval(ruleKey)) + 1) : map.set(eval(ruleKey),1);
    })
    return map.get(ruleValue) || 0;
};

四、总结

搞的我心刺挠