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