使用 AND 条件在字符串数组中搜索字符串

问题描述 投票:0回答:1

如何使

includes()
some()
匹配所有情况?

let instance = ['m6gd.medium', '1 vCPU', '4 GiB'];

// let search = "medium"; // true
// let search = "4gb"; // true
// let search = "medium 4gb"; // true
let search = "medium 12gb"; // true - need to make this false - need AND condition

let found = instance.some(s1 =>
{
    console.log("s1 = ", s1.toLowerCase());

    let search_term = search.toLowerCase();
    search_term = search_term.replace(/gb/g, "gib");
    search_term = search_term.replace(/(\d+)(gib)/g, "$1 $2");

    console.log("search_term = ", search_term);

    return search_term.split(' ').some(s2 =>
        {
            console.log("s2 = ", s2.toLowerCase(), "\n");
            return s1.toLowerCase().includes(s2.toLowerCase())
        });
});

console.log(found);
javascript search
1个回答
-1
投票
// Split the search string into separate terms
let searchSpecific = search.split(" ");

// Check if each search term matches a corresponding part of the instance array
let matches = true;
for (let i = 0; i < searchSpecific.length; i++) {
    let matchedTerm = false;
    for (let j = 0; j < instance.length; j++) {
        let instanceTerm = instance[j].toLowerCase();
        if (searchSpecific[i].toLowerCase() === 'medium') {
            if (instanceTerm.includes('medium')) {
                matchedTerm = true;
                break;
            }
        } else if (searchSpecific[i].toLowerCase().includes('gb')) {
            let gb = parseInt(searchSpecific[i]);
            if (instanceTerm.includes('gb') && parseInt(instanceTerm) >= gb) {
                matchedTerm = true;
                break;
            }
        }
    }
    if (!matchedTerm) {
        matches = false;
        break;
    }
}

console.log(matches); 
© www.soinside.com 2019 - 2024. All rights reserved.