簡體   English   中英

在對象數組中查找完全匹配時是否要返回true或false?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM