我有一个具有相同属性的JavaScript对象数组,如下所示:
box[0] = { name: 'somename', /* more properties... */ };
box[1] = { name: 'othername', /* more properties... */ };
box[2] = { name: 'onemorename', /* more properties... */ };
// more objects in the array...
我希望对此数组进行子集化,使其仅包含与“list”名称匹配的对象,并将那些不匹配的对象复制到另一个名为cache
的数组中。我想也许我可以将这个对象数组与另一个数组进行比较,该数组只包含一个具有所需名称的字符串列表,并根据此列表检查每个对象的name属性,以创建一个匹配的数组。我不知道这是否有用,或者它是否是达到我想要的最佳方法,这就是我要求你帮助的原因。也许用100个名字检查每个200-500个对象并不是一件好事,我真的不知道。
您对我如何做到这一点有什么想法吗?更好的是,你能指点我一个例子吗?
提前致谢。
答案 0 :(得分:0)
假设您想要的名称列表存储在数组中,
var wantedNames = [ "first name", "second name", .. ];
有两个数组 - 匹配名称的数组和不匹配的数组。循环遍历框对象中的每个项目,如果它包含列表中的名称,则将其包括在内。
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