javascript - Array.prototype.includes() 通配符选项?

标签 javascript

我有以下代码,它按标签(特别是 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/

相关文章:

javascript - 此刻如何捕捉旋转的 ladda 按钮?

javascript - 如何从 node.js 路由中的内部函数内部获取参数到以下范围

javascript - 使用 Sinon.JS 打桩 async.waterfall

javascript - 单击新 h3 后隐藏以前打开的 p 标签

javascript - webpack 是如何使用 polyfill 的?

javascript - AngularJS Form 和 $scope 不互相更新

javascript - Meteor连接超时调整

javascript - HttpPostedFileBase 未绑定(bind)到模型 C# MVC 5

javascript - 如何在来自 SlidesJS.com 的 SlideJS 中自动切换幻灯片?

javascript - 如何正确使用带有 lodash debounce 的 Vue JS watch