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