オブジェクトのソース配列を処理する必要があります。配列内のオブジェクトの多くには、同じになる3つのプロパティ値があります。新しいオブジェクトを作成し、それを宛先配列にプッシュするために使用されるのは、これらの値です。ソース配列上の別のオブジェクトが、宛先配列上のオブジェクトの1つと同じ3つのプロパティ値を思い付くと、宛先配列上の一致するオブジェクトの訪問数が1つ増えます。
理解しやすいように、ソース配列では、各オブジェクトはユーザーに属する食事のレコードです。2番目の配列には、ユーザーの詳細と食事の数を格納する必要があります。
以下のように失敗したいくつかの解決策を試しました。以下のコードはリテラルオブジェクトを作成すると思いました。それが宛先配列にあるかどうかを、indexOf(見つからない場合は-1)を見つけて確認し、見つからない場合はプッシュします。問題は、オブジェクトが見つからないことです。3000食を検索すると、2番目の配列の長さが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);
}
}