我有一个包含对象数组的posList。我想检查输入的值是否与posList的每个对象中的所有posCode完全匹配。搜索匹配时,我的RegExp返回true。例如,当4325 输入后返回true。如果匹配完全正确,我只希望它返回true。
//short example
posList = [
{
posCode: "43252",
description: "hi"
},
{
posCode: "HTD632",
description: "hello"
}
]
checkPosCodeUnique = () => {
const re = new RegExp(_.escapeRegExp(this.state.posCode), 'i');
const isMatch = result => (re.test(result.posCode));
const list = _.filter(this.state.posList, isMatch);
if (list.length > 0) {
error=true;
}
};
答案 0 :(得分:2)
为什么需要使用正则表达式?
posList = [{
posCode: "43252",
description: "hi"
},
{
posCode: "HTD632",
description: "hello"
}
]
checkPosCodeUnique = (search) => {
return posList.some(item => { return item.posCode == search });
};
console.log(checkPosCodeUnique('43252'));
console.log(checkPosCodeUnique('HTD632'));
console.log(checkPosCodeUnique(123));
答案 1 :(得分:1)
使用some
数组方法:
console.log(posList.some(pos => pos.posCode.toUpperCase() === this.state.posCode.toUpperCase());
答案 2 :(得分:1)
对于您描述的内容,您不需要正则表达式,只需过滤列表即可:
posList.filter(e => e.posCode === posCode)
有关您的版本的实现以及使用简单过滤器的实现,请参见https://codesandbox.io/s/5w95r4zmvl。