我有一個 JSON 物件陣列(“帖子”),其中每個物件都包含一個標簽陣列(字串)。我想通過傳入標簽來過濾帖子。例如,如果我有 10 個帖子,其中 2 個被標記為“新聞”,那么我回傳帶有該標簽的 2 個帖子物件。
這是我嘗試過的:
const filteredData = posts.filter(((post, tag) =>
post.tags.filter((t, tag) => t == tag)
));
上面的代碼不起作用;當這不是真的時,它就像每個帖子都是有效的。我的猜測是每個“標簽”都是一個新變數,并且沒有正確傳遞,因為這似乎是 VS Code 從顏色突出顯示中所表明的。
我無法弄清楚這個問題的正確語法。我相信這非常簡單。
該站點解釋了過濾器方法的作業原理,但沒有解釋如何傳入引數。它顯示了一個帶有硬編碼數字的示例。就我而言,我需要傳入標簽引數,以便我可以檢查給定的標簽。
我發現在 Stack Overflow 上與此相關的所有其他問題都比我嘗試做的要復雜得多,并且沒有清楚地解釋語法是如何作業的。任何幫助表示贊賞。
uj5u.com熱心網友回復:
您可以從函式內部訪問外部變數。
const tagToFilter = "..."
const filteredData = posts.filter((post) =>
post.tags.includes(tagToFilter)
);
請注意,我將內部函式切換為使用.includes()
. 如果您需要為此使用函式,則應使用.some()
而不是.filter()
(用于內部函式)。
uj5u.com熱心網友回復:
過濾器需要一個回傳布林值,但你只回傳一個新陣列,你可以使用 .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)
));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504261.html
標籤:javascript 反应 下一个.js 句法