本文正在参与掘金团队号上线活动,点击 查看大厂春招职位
一、题目描述
二、思路分析
把ruleKey映射为数组下标0,1,2,匹配、遍历。
三、AC代码
- 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;
};
四、总结
搞的我心刺挠