如何使
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);
// 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);