【问题标题】:array every() with includes() issues带有 include() 问题的数组 every()
【发布时间】:2022-01-20 13:12:50
【问题描述】:

大家好,我花了太多时间试图找到解决方案,我想知道是否有人可以帮助我。

所以问题是,我有 2 个数组,第一个包含来自地址的多个单词,另一个是我用在输入中输入的单词构建的,如果我在输入中输入完全相同的单词,它将返回 true在字符串数组中,但如果它也部分匹配,我希望它返回 true,例如,如果我在输入中写入“CEN EL”,我在字符串数组中有“CENTER”和“RACHEL”,因为它会部分匹配 2数组元素个数

这是我一直在尝试整理的代码

        function checker(arr, words) {
            return words.every(v => arr.includes(v));
        }

        this.shippingAddress.forEach(address => {
            const stringBuild = `${address.name} ${address.display_address} ${address.phone}`;
            const arrayString = stringBuild.split(' ');
            if (checker(arrayString, words)) {
                _results.push(address);
            }
        });

数组arrayString 是一个输入示例:

[
    0: "CENTER"
    1: "MANIKI"
    2: "BRUCHESI"
    3: "2225,"
    4: ""
    5: "STREET"
    6: "RACHEL"
    7: "EAST,"
    8: "CITY"
    9: "STUFF,"
    10: "STUFF"
    11: "STUFF"
    12: "STUFF"
    13: "STUFF"
]

对于数组单词:

[
    0: "CEN"
    1: "EL"
    
]

并且输出为真,因为在检查器中传递的 CEN 和 EL 将包含在第一个数组中,但它只有在我将完整的单词放入时才有效

【问题讨论】:

  • 请提供输入和预期输出的示例测试用例
  • @DanielA.White 我已经更新了问题

标签: javascript arrays


【解决方案1】:

如果我理解正确,如果数组中的每个单词都部分(或完全)匹配,您想返回true

对于每个必须匹配的单词,我会测试输入的单词数组,看看是否至少有一个输入的单词部分匹配目标。我会使用正则表达式,并使用 "i" 使其不区分大小写:

const checkArray = ["center","rachel"];

const isOK = (typedWords) => checkArray.every( word1 => typedWords.some( word2 => new RegExp(word2, "i").test(word1)))

console.log(isOK([ "ent" , "rac" ]))
console.log(isOK([ "AaAa" , "BbBb" ]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2013-05-09
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2013-01-07
    • 2011-05-16
    相关资源
    最近更新 更多