所以我在使用RegExp时偶然发现了问题。我想比较两个数组
具有候选人技能的人
并且具有工作所需的技能。
很遗憾,我现在必须使用c\\+\\+
以确保不会出现无效表达式的错误。
问题:如何动态进行操作,以便准备使用特殊字符的C#
或其他语言?
此外,我觉得第一个map(obj => obj.toLowerCase())
是多余的,应该由正则表达式单独处理,但也不能这样做。
我最终想要实现的是获得候选人相对于工作的百分比技能覆盖率(他/她需要多少技能)。
这是我的代码:
percentage (skills) {
let matches = skills
.map(obj => obj.toLowerCase())
.filter(word => this.flattenedSkills.some(x => {
if(word === 'css3') word = 'css'
if(word === 'c++' || x === 'c++') word = 'c\\+\\+'
// console.log(word,': ', x, ' = ', x.match(new RegExp(word,'gi')))
return x.match(new RegExp(word,'gi'))
}))
.length
console.log(matches)
return (matches / this.flattenedSkills.length * 100)
},