Что-то вроде этого:
ReceiveSocket.on('socketMessage', returnedData => {
// objectsBySocialID always starts empty to make sure that
// sendRequest() only receieves new data. Notice that all previous
// data was already handled when it arrived, just like the
// current batch of data is being handled now.
const objectsBySocialID = {};
returnedData.forEach(obj => {
// If there's already one or more objects with the SocialID of the
// current object, then just add it to the array that contains the
// objects that have that SocialID.
if (objectsBySocialID[obj.SocialID]) {
objectsBySocialID[obj.SocialID].push(obj)
}
// Otherwise, initialize the array that will contain objects with
// this object's specific SocialID and assign it to the
// corresponding key.
else {
objectsBySocialID[obj.SocialID] = [obj]
}
// objectsBySocialID only contains the latest changes.
sendRequest(objectsBySocialID);
});
});
Используя данные из вашего примера, objectsBySocialID
должно выглядеть так:
{
'68799': [
{
'ID':'4567132',
'GroupType':'2',
'Name':'John Chris',
'SocialID':'68799',
'SecurityID':'18799-er7ree-781347a-71237n',
},
{
'ID':'4567438',
'GroupType':'2' ,
'SocialID':'68799',
'SecurityID':'68789-4d37er-98c5347-e05d9b',
},
{
'GroupType':'2',
'SocialID':'68799',
'PublicSecurityID':'18799-er7ree-781347a-71237n',
'PrivateSecurityID':'68789-4d37er-98c5347-e05d9b',
},
],
}
и когда вы закончите сбор и Группируя данные, вы должны иметь возможность передать objectsBySocialID
в качестве аргумента функции, которая имеет дело с упорядоченными данными (sendRequest()
в этом примере).