我有以下代码,它按标签(特别是 2 个标签)过滤数组。它适用于单词字符串,但我想添加使用某种通配符的功能。例如,过滤以 "-"
开头的所有标签(我尝试对标签进行分组)。在这里使用这个字符串不起作用。我也尝试过使用正则表达式,例如。 /^-/
但这也不起作用。
我发现Array.prototype.includes()
与String.prototype.includes()
不同,因为它只捕获整个“单词”,所以这可能解释了为什么它不起作用,但我想知道是否有某种方法可以做到这一点?
var cards = [
{
cardId: 1001,
tags: ["_easy", "-casual"],
videoId: "rO5BVRK6KMo",
},
{
cardId: 1002,
tags: ["_hard", "-polite"],
videoId: "qK--SAlGD0Q",
}
]
var ReviewtagFilter = function() {
let reviewsTagged = [];
let tagLevel = "_easy";
let tagTopic = "-casual"; //***"-" doesn't work to get -casual & "-polite"
//console.log("tagLevel: ", tagLevel + "tagTopic" , tagTopic)
reviewsTagged = cards.filter(
data => data.tags.includes(tagLevel) && data.tags.includes(tagTopic)
);
console.log(reviewsTagged)
};
ReviewtagFilter();
最佳答案
正如其他人提到的,您不能将正则表达式与 Array.includes() 一起使用。最简单的方法是使用 some()
或 every()
(取决于您想要实现的目标):
var ReviewtagFilter = function() {
let reviewsTagged = [];
let tagLevel = "_easy";
let tagTopic = /^-/;
reviewsTagged = cards.filter(
data => data.some(tag => tag.match(tagTopic)) && data.tags.includes(tagLevel)
);
console.log(reviewsTagged)
};
关于javascript - Array.prototype.includes() 通配符选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59626808/