[英]Want to return true or false when finding an exact match in an array of objects?
我有一個包含對象數組的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;
}
};
為什么需要使用正則表達式?
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));
使用some
數組方法:
console.log(posList.some(pos => pos.posCode.toUpperCase() === this.state.posCode.toUpperCase());
對於您描述的內容,您不需要正則表達式,只需過濾列表即可:
posList.filter(e => e.posCode === posCode)
有關版本的實現以及使用簡單過濾器的實現,請參見https://codesandbox.io/s/5w95r4zmvl 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.