[英]JS - filter an array (includes object) with an array
我想我不明白如何用數組過濾 object。
我從我的 mongoDB 得到這些數據:
[{
"_id": "5fed0cde68b6e7856dffb26c",
"question": "Questions1",
"answer1": "1",
"isTrue1": true,
"answer2": "2",
"isTrue2": false,
"answer3": "3",
"isTrue3": false,
"answer4": "4",
"isTrue4": false,
"category": ["5fed0fe768b6e7856d0244ea", "5ff0278968b6e7856d3d04cd"]
},
{
"_id": "5ff47f6768b6e7856d121930",
"question": "Questions1",
"answer1": "1",
"isTrue1": true,
"answer2": "2",
"isTrue2": false,
"answer3": "3",
"isTrue3": false,
"answer4": "4",
"isTrue4": false,
"category": ["5fed0fe768b6e7856d0244ea", "5ff0278968b6e7856d3d04cd"]
},
{
"_id": "5ff7190568b6e7856dba37c6",
"question": "Questions1",
"answer1": "1",
"isTrue1": true,
"answer2": "2",
"isTrue2": false,
"answer3": "3",
"isTrue3": false,
"answer4": "4",
"isTrue4": false,
"category": ["5ff8d51668b6e7856dd0ce9b", "5ff8d51f68b6e7856dd0d3f5"]
}
]
現在我想用這個數組過濾數據(數字是“_id”的值):
[5fed0cde68b6e7856dffb26c,5ff47f6768b6e7856d121930]
我期望 mongoDB-Data 的前兩個對象。
有人可以解釋並幫助我解決這個問題嗎?
您可以從 id 數組創建一個Set
並根據它過濾數據。
const arr = [{"_id":"5fed0cde68b6e7856dffb26c","question":"Questions1","answer1":"1","isTrue1":true,"answer2":"2","isTrue2":false,"answer3":"3","isTrue3":false,"answer4":"4","isTrue4":false,"category":["5fed0fe768b6e7856d0244ea","5ff0278968b6e7856d3d04cd"]}, {"_id":"5ff47f6768b6e7856d121930","question":"Questions1","answer1":"1","isTrue1":true,"answer2":"2","isTrue2":false,"answer3":"3","isTrue3":false,"answer4":"4","isTrue4":false,"category":["5fed0fe768b6e7856d0244ea","5ff0278968b6e7856d3d04cd"]}, {"_id":"5ff7190568b6e7856dba37c6","question":"Questions1","answer1":"1","isTrue1":true,"answer2":"2","isTrue2":false,"answer3":"3","isTrue3":false,"answer4":"4","isTrue4":false,"category":["5ff8d51668b6e7856dd0ce9b","5ff8d51f68b6e7856dd0d3f5"]}] const set = new Set(['5fed0cde68b6e7856dffb26c','5ff47f6768b6e7856d121930']); const res = arr.filter(({_id})=>set.has(_id)); console.log(res);
如評論中提到的,您可以使用 Arrays 過濾器 function。
在過濾器內部,您可以使用包含方法構建條件,因此請檢查您的 searchID' 數組是否包含新 id
const objects = [{ "_id": "5fed0cde68b6e7856dffb26c", "question": "Questions1", "answer1": "1", "isTrue1": true, "answer2": "2", "isTrue2": false, "answer3": "3", "isTrue3": false, "answer4": "4", "isTrue4": false, "category": ["5fed0fe768b6e7856d0244ea", "5ff0278968b6e7856d3d04cd"] }, { "_id": "5ff47f6768b6e7856d121930", "question": "Questions1", "answer1": "1", "isTrue1": true, "answer2": "2", "isTrue2": false, "answer3": "3", "isTrue3": false, "answer4": "4", "isTrue4": false, "category": ["5fed0fe768b6e7856d0244ea", "5ff0278968b6e7856d3d04cd"] }, { "_id": "5ff7190568b6e7856dba37c6", "question": "Questions1", "answer1": "1", "isTrue1": true, "answer2": "2", "isTrue2": false, "answer3": "3", "isTrue3": false, "answer4": "4", "isTrue4": false, "category": ["5ff8d51668b6e7856dd0ce9b", "5ff8d51f68b6e7856dd0d3f5"] } ] const searchKeywords = ["5fed0cde68b6e7856dffb26c","5ff47f6768b6e7856d121930"] let resultObj = objects.filter(val => searchKeywords.includes(val._id)) console.log(resultObj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.