簡體   English   中英

根據其屬性之一制作JavaScript對象數組的子集?

[英]Making a subset of an array of JavaScript objects based on one of their properties?

我有一個對象的JavaScript數組,每個對象具有相同的屬性,如下所示:

box[0] = { name: 'somename', /* more properties... */ };
box[1] = { name: 'othername', /* more properties... */ };
box[2] = { name: 'onemorename', /* more properties... */ };
// more objects in the array...

我想對該數組進行子集處理,以使其僅包含與名稱“列表”匹配的對象,然后將不包含這些對象的對象復制到另一個名為cache數組中。 我在想,也許我可以將對象數組與另一個數組進行比較,該數組僅包含具有要匹配的所需名稱的字符串列表,對照該列表檢查每個對象的name屬性,以創建一個具有匹配名稱的新數組。 我不知道這是否行得通,還是實現我想要的最佳方法,這就是為什么我要您的幫助。 也許將200-500個對象中的每個對象與具有100個名稱的列表進行比較並不是一件好事,我真的不知道。

您對我該怎么做有任何想法? 更好的是,您能指出一個例子嗎?

提前致謝。

假設您想要的名稱列表存儲在數組中,

var wantedNames = [ "first name", "second name", .. ];

有兩個數組-匹配名稱的數組和不匹配的數組。 遍歷box對象中的每個項目,如果其中包含列表中的名稱,則將其包括在內。

var objectsMatchingName = box.filter(function(item) {
    return wantedNames.indexOf(item.name) !== -1;
});

var cache = box.filter(function(item) {
    return objectsMatchingName.indexOf(item) === -1;
});

我希望有某種類型的數組差異運算,所以您可以做(用偽代碼):

var cache = box - objectsMatchingName

暫無
暫無

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

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