繁体   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