[英]Js filter array object by array object
我有以下數組。
數組原件:
var array =[
{ "id": 1, "name": "abc", "gender": "m","age": "15" },
{ "id": 2, "name": "a", "gender": "m", "age": "25" },
{ "id": 3,"name": "efg", "gender": "f","age": "5" },
{ "id": 4,"name": "hjk","gender": "m","age": "35" },
{ "id": 5, "name": "ikly","gender": "m","age": "41" },
{ "id": 6, "name": "ert", "gender": "f", "age": "30" },
{ "id": 7, "name": "qwe", "gender": "f", "age": "31" },
{ "id":8, "name": "bdd", "gender": "m", "age": " 8" }
];
數組刪除:
var arrayCopy =[
{ "id": 1, "name": "abc", "gender": "m","age": "15" },
{ "id": 3,"name": "efg", "gender": "f","age": "5" },
{ "id": 7, "name": "qwe", "gender": "f", "age": "31" },
{ "id":8, "name": "bdd", "gender": "m", "age": " 8" }
];
我必須刪除包含在刪除數組中的原始數組中的元素,但我遇到了一些問題。
我想從數組副本中獲取所有 id 然后進行排除,但我不太確定這是最好的方法。
一些忠告?
創建一組要從arrayCopy
排除的 id。 然后您可以過濾數組,並保留所有帶有未出現在 Set 中的 id 的項目:
const array = [{"id":1,"name":"abc","gender":"m","age":"15"},{"id":2,"name":"a","gender":"m","age":"25"},{"id":3,"name":"efg","gender":"f","age":"5"},{"id":4,"name":"hjk","gender":"m","age":"35"},{"id":5,"name":"ikly","gender":"m","age":"41"},{"id":6,"name":"ert","gender":"f","age":"30"},{"id":7,"name":"qwe","gender":"f","age":"31"},{"id":8,"name":"bdd","gender":"m","age":" 8"}]; const arrayCopy = [{"id":1,"name":"abc","gender":"m","age":"15"},{"id":3,"name":"efg","gender":"f","age":"5"},{"id":7,"name":"qwe","gender":"f","age":"31"},{"id":8,"name":"bdd","gender":"m","age":" 8"}]; const idsToExclude = new Set(arrayCopy.map(({ id }) => id)); const result = array.filter(({ id }) => !idsToExclude.has(id)); console.log(result);
我想從數組副本中獲取所有 id 然后進行排除...
是的,這可能是最好的方法。 將它們存儲在Set
(ES2015+) 或對象中作為屬性(例如, ids[id] = true
),然后對原始數組使用filter
,只保留 ID 不在集合/對象中的條目。
或者,如果數組很短(ish),您可以在外部數組上使用filter
,然后在“刪除”數組上使用some
來確定它是否具有外部數組條目的 ID。 這意味着重復遍歷“刪除”數組(對於外部數組中的每個條目一次),但對於較小的數組,這不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.