[英]Array.prototype.includes() wildcard options?
我有以下代码按标签(特别是 2 个标签)过滤数组。 它适用于字符串,但我想添加使用某种通配符的功能。 例如过滤所有以"-"
开头的标签(我尝试对标签进行分组)。 在此处使用此字符串不起作用。 我也尝试过使用正则表达式,例如。 /^-/
但这也不起作用。
我发现Array.prototype.includes()
与String.prototype.includes()
Array.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)
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.