簡體   English   中英

Array.prototype.includes() 通配符選項?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM