簡體   English   中英

Javascript 如何按參數過濾數組

[英]Javascript How to Filter Array By Parameter

我有一個 JSON 對象(“帖子”)數組,其中每個 object 包含一個標簽數組(字符串)。 我想通過傳入標簽來過濾帖子。 例如,如果我有 10 個帖子,其中 2 個被標記為“新聞”,那么我返回帶有該標簽的 2 個帖子對象。

這是我嘗試過的:

const filteredData = posts.filter(((post, tag) =>
      post.tags.filter((t, tag) => t == tag)
    ));

上面的代碼不起作用; 當這不是真的時,它就像每個帖子都是有效的。 我的猜測是每個“標簽”都是一個新變量,並且沒有正確傳遞,因為這似乎是 VS Code 從顏色突出顯示中所表明的。

我無法弄清楚這個問題的正確語法。 我相信這非常簡單。

該站點解釋了過濾器方法的工作原理,但沒有解釋如何傳入參數。 它顯示了一個帶有硬編碼數字的示例。 就我而言,我需要傳入標簽參數,以便我可以檢查給定的標簽。

我發現在 Stack Overflow 上與此相關的所有其他問題都比我嘗試做的要復雜得多,並且沒有清楚地解釋語法是如何工作的。 任何幫助表示贊賞。

您可以從 function 中訪問外部變量。

const tagToFilter = "..."

const filteredData = posts.filter((post) =>
  post.tags.includes(tagToFilter)
);

請注意,我將內部 function 切換為使用.includes() 如果您需要為此使用 function,則應使用.some()而不是.filter() (用於內部函數)。

過濾器需要返回 boolean,但你只返回一個新數組,你可以使用.some() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

應該是這樣的

const filteredData = posts.filter(((post, tag) =>
  post.tags.some((t, tag) => t === tag)
));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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