我需要处理对象的源数组,数组中的许多对象都具有三个相同的属性值。正是这些值将用于创建新对象并将其推送到目标数组。当源数组上的另一个对象与目标数组中的一个对象具有相同的三个属性值时,目标数组上的匹配对象的访问计数将加一。
为了帮助您理解,在源数组中,每个对象都是属于用户的一顿饭的记录。在第二个数组中,我需要存储用户详细信息和他们的用餐次数。
我尝试了一些失败的解决方案,如下所示。我认为下面的代码会创建一个文字对象,通过查找它的 indexOf(-1 表示未找到)来检查它是否在目标数组中,如果未找到则将其推送。问题是它永远找不到对象,如果我搜索 3000 顿饭,第二个数组的长度为 3000!
下面的代码不会尝试存储访问次数。
userArray = new Array();
for (var i = 0; i < filteredObjects.length; i++) {
var user = {
forname: filteredObjects[i].forname,
surname: filteredObjects[i].surname,
dincat: filteredObjects[i].dincat,
};
var index = userArray.indexOf(user);
if (index = -1) {
userArray.push(user);
}
}