javascript中的多维对象过滤
我有一个JSON响应,我想根据每个用户ID对synced值进行归档,以获得synced为false的用户数和synced为true的用户数。如果任何用户在任何活动下同步了值false,则结果应为false,否则为true。也没有必要在每个活动下都有所有用户 JSON对象如下所示:javascript中的多维对象过滤,javascript,arrays,json,Javascript,Arrays,Json,我有一个JSON响应,我想根据每个用户ID对synced值进行归档,以获得synced为false的用户数和synced为true的用户数。如果任何用户在任何活动下同步了值false,则结果应为false,否则为true。也没有必要在每个活动下都有所有用户 JSON对象如下所示: [ { “活动ID”:“302ce18c-d856-4c6a-b61c-69d5ff058c3d”, “lmsActivityIdentifier”:“2729821”, “名称”:“测试”, “总积分”:6.0,
[
{
“活动ID”:“302ce18c-d856-4c6a-b61c-69d5ff058c3d”,
“lmsActivityIdentifier”:“2729821”,
“名称”:“测试”,
“总积分”:6.0,
“lmsUserGrades”:[
{
“用户ID”:“1cee27a4-91e3-4975-a1d8-b31ece79db10”,
“LMSUSERIDIFIER”:“9991865”,
“总积分”:2.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“4ed71a4f-6ae1-4218-b122-f4e9eeefc03f”,
“LMSUSERIDIFIER”:“999111”,
“总积分”:3.0,
“同步”:正确,
“版本”:1
},
{
“用户ID”:“a8fcb57a-0f59-4104-a18d-d185eb003c0c”,
“LMSUSERIDIFIER”:“9991862”,
“总积分”:4.0,
“同步”:正确,
“版本”:1
},
{
“用户ID”:“54400abe-b25d-45fe-b77c-e1a0b90f0c86”,
“LMSUSERIDIFIER”:“9991864”,
“总积分”:1.0,
“同步”:正确,
“版本”:1
},
{
“用户ID”:“05afc973-37fe-4b6c-84ac-26b8c8255988”,
“LMSUSERIDIFIER”:“9991861”,
“总积分”:3.0,
“同步”:正确,
“版本”:1
}
],
“版本”:1
},
{
“活动ID”:“46aa19a1-5e0f-4dbf-a0bc-e7bcef46a703”,
“lmsActivityIdentifier”:“27292852”,
“名称”:“会话1”,
“总积分”:1.0,
“lmsUserGrades”:[
{
“用户ID”:“4ed71a4f-6ae1-4218-b122-f4e9eeefc03f”,
“LMSUSERIDIFIER”:“9991863”,
“总积分”:1.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“1cee27a4-91e3-4975-a1d8-b31ece79db10”,
“LMSUSERIDIFIER”:“9991865”,
“总积分”:0.0,
“同步”:正确,
“版本”:1
},
{
“用户ID”:“a8fcb57a-0f59-4104-a18d-d185eb003c0c”,
“LMSUSERIDIFIER”:“9991862”,
“总积分”:1.0,
“同步”:正确,
“版本”:1
},
{
“用户ID”:“54400abe-b25d-45fe-b77c-e1a0b90f0c86”,
“LMSUSERIDIFIER”:“9991864”,
“总积分”:0.5,
“同步”:正确,
“版本”:1
},
{
“用户ID”:“05afc973-37fe-4b6c-84ac-26b8c8255988”,
“LMSUSERIDIFIER”:“9991861”,
“总积分”:0.0,
“同步”:正确,
“版本”:1
}
],
“版本”:1
},
{
“活动ID”:“1f5b78b6-14df-4734-a57a-bcb84a774abf”,
“lmsActivityIdentifier”:“27292849”,
“名称”:“会话2”,
“总积分”:2.0,
“lmsUserGrades”:[
{
“用户ID”:“4ed71a4f-6ae1-4218-b122-f4e9eeefc03f”,
“LMSUSERIDIFIER”:“9991863”,
“总积分”:0.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“1cee27a4-91e3-4975-a1d8-b31ece79db10”,
“LMSUSERIDIFIER”:“9991865”,
“总积分”:2.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“05afc973-37fe-4b6c-84ac-26b8c8255988”,
“LMSUSERIDIFIER”:“9991861”,
“总积分”:35.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“a8fcb57a-0f59-4104-a18d-d185eb003c0c”,
“LMSUSERIDIFIER”:“9991862”,
“总积分”:0.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“54400abe-b25d-45fe-b77c-e1a0b90f0c86”,
“LMSUSERIDIFIER”:“9991864”,
“总积分”:1.0,
“已同步”:错误,
“版本”:1
}
],
“版本”:1
},
{
“活动ID”:“e5d541e6-d373-44c3-a665-15337026bd0e”,
“lmsActivityIdentifier”:“27292850”,
“名称”:“会话3”,
“总积分”:10.0,
“lmsUserGrades”:[
{
“用户ID”:“4ed71a4f-6ae1-4218-b122-f4e9eeefc03f”,
“LMSUSERIDIFIER”:“9991863”,
“总积分”:8.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“1cee27a4-91e3-4975-a1d8-b31ece79db10”,
“LMSUSERIDIFIER”:“9991865”,
“总积分”:8.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“a8fcb57a-0f59-4104-a18d-d185eb003c0c”,
“LMSUSERIDIFIER”:“9991862”,
“总积分”:5.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“54400abe-b25d-45fe-b77c-e1a0b90f0c86”,
“LMSUSERIDIFIER”:“9991864”,
“总积分”:4.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“05afc973-37fe-4b6c-84ac-26b8c8255988”,
“LMSUSERIDIFIER”:“9991861”,
“总积分”:8.0,
“已同步”:错误,
“版本”:1
}
],
“版本”:1
},
{
“活动ID”:“a9d09f86-d74c-4868-a2cf-ec80584cfba7”,
“lmsActivityIdentifier”:“27292848”,
“名称”:“会话4”,
“总积分”:3.0,
“lmsUserGrades”:[
{
“用户ID”:“4ed71a4f-6ae1-4218-b122-f4e9eeefc03f”,
“LMSUSERIDIFIER”:“9991863”,
“总积分”:1.0,
“已同步”:错误,
“版本”:1
},
{
“用户ID”:“1cee27a4-91e3-4975-a1d8-b31ece79db10”,
“LMSUSERIDIFIER”:“9991865”,
const countSynced = (activities) => {
let res = {
synced: 0,
nonSynced: 0,
};
for (const activity of activities){
for (const user of activity.lmsUserGrades){
if (user.synced) res.synced++
else res.nonSynced++;
}
}
return res;
}
const data = [
{
"activityId":"302ce18c-d856-4c6a-b61c-69d5ff058c3d",
"lmsActivityIdentifier":"27292821",
"name":"test",
"totalPoints":6.0,
"lmsUserGrades":[
{
"userId":"1cee27a4-91e3-4975-a1d8-b31ece79db10",
"lmsUserIdentifier":"9991865",
"totalPoints":2.0,
"synced":false,
"version":1
},
{
"userId":"4ed71a4f-6ae1-4218-b122-f4e9eeefc03f",
"lmsUserIdentifier":"9991111",
"totalPoints":3.0,
"synced":true,
"version":1
},
{
"userId":"a8fcb57a-0f59-4104-a18d-d185eb003c0c",
"lmsUserIdentifier":"9991862",
"totalPoints":4.0,
"synced":true,
"version":1
},
{
"userId":"54400abe-b25d-45fe-b77c-e1a0b90f0c86",
"lmsUserIdentifier":"9991864",
"totalPoints":1.0,
"synced":true,
"version":1
},
{
"userId":"05afc973-37fe-4b6c-84ac-26b8c8255988",
"lmsUserIdentifier":"9991861",
"totalPoints":3.0,
"synced":true,
"version":1
}
],
"version":1
},
{
"activityId":"46aa19a1-5e0f-4dbf-a0bc-e7bcef46a703",
"lmsActivityIdentifier":"27292852",
"name":"Session1",
"totalPoints":1.0,
"lmsUserGrades":[
{
"userId":"4ed71a4f-6ae1-4218-b122-f4e9eeefc03f",
"lmsUserIdentifier":"9991863",
"totalPoints":1.0,
"synced":false,
"version":1
},
{
"userId":"1cee27a4-91e3-4975-a1d8-b31ece79db10",
"lmsUserIdentifier":"9991865",
"totalPoints":0.0,
"synced":true,
"version":1
},
{
"userId":"a8fcb57a-0f59-4104-a18d-d185eb003c0c",
"lmsUserIdentifier":"9991862",
"totalPoints":1.0,
"synced":true,
"version":1
},
{
"userId":"54400abe-b25d-45fe-b77c-e1a0b90f0c86",
"lmsUserIdentifier":"9991864",
"totalPoints":0.5,
"synced":true,
"version":1
},
{
"userId":"05afc973-37fe-4b6c-84ac-26b8c8255988",
"lmsUserIdentifier":"9991861",
"totalPoints":0.0,
"synced":true,
"version":1
}
],
"version":1
},
{
"activityId":"1f5b78b6-14df-4734-a57a-bcb84a774abf",
"lmsActivityIdentifier":"27292849",
"name":"Session2",
"totalPoints":2.0,
"lmsUserGrades":[
{
"userId":"4ed71a4f-6ae1-4218-b122-f4e9eeefc03f",
"lmsUserIdentifier":"9991863",
"totalPoints":0.0,
"synced":false,
"version":1
},
{
"userId":"1cee27a4-91e3-4975-a1d8-b31ece79db10",
"lmsUserIdentifier":"9991865",
"totalPoints":2.0,
"synced":false,
"version":1
},
{
"userId":"05afc973-37fe-4b6c-84ac-26b8c8255988",
"lmsUserIdentifier":"9991861",
"totalPoints":35.0,
"synced":false,
"version":1
},
{
"userId":"a8fcb57a-0f59-4104-a18d-d185eb003c0c",
"lmsUserIdentifier":"9991862",
"totalPoints":0.0,
"synced":false,
"version":1
},
{
"userId":"54400abe-b25d-45fe-b77c-e1a0b90f0c86",
"lmsUserIdentifier":"9991864",
"totalPoints":1.0,
"synced":false,
"version":1
}
],
"version":1
},
{
"activityId":"e5d541e6-d373-44c3-a665-15337026bd0e",
"lmsActivityIdentifier":"27292850",
"name":"Session3",
"totalPoints":10.0,
"lmsUserGrades":[
{
"userId":"4ed71a4f-6ae1-4218-b122-f4e9eeefc03f",
"lmsUserIdentifier":"9991863",
"totalPoints":8.0,
"synced":false,
"version":1
},
{
"userId":"1cee27a4-91e3-4975-a1d8-b31ece79db10",
"lmsUserIdentifier":"9991865",
"totalPoints":8.0,
"synced":false,
"version":1
},
{
"userId":"a8fcb57a-0f59-4104-a18d-d185eb003c0c",
"lmsUserIdentifier":"9991862",
"totalPoints":5.0,
"synced":false,
"version":1
},
{
"userId":"54400abe-b25d-45fe-b77c-e1a0b90f0c86",
"lmsUserIdentifier":"9991864",
"totalPoints":4.0,
"synced":false,
"version":1
},
{
"userId":"05afc973-37fe-4b6c-84ac-26b8c8255988",
"lmsUserIdentifier":"9991861",
"totalPoints":8.0,
"synced":false,
"version":1
}
],
"version":1
},
{
"activityId":"a9d09f86-d74c-4868-a2cf-ec80584cfba7",
"lmsActivityIdentifier":"27292848",
"name":"Session4",
"totalPoints":3.0,
"lmsUserGrades":[
{
"userId":"4ed71a4f-6ae1-4218-b122-f4e9eeefc03f",
"lmsUserIdentifier":"9991863",
"totalPoints":1.0,
"synced":false,
"version":1
},
{
"userId":"1cee27a4-91e3-4975-a1d8-b31ece79db10",
"lmsUserIdentifier":"9991865",
"totalPoints":2.0,
"synced":false,
"version":1
},
{
"userId":"a8fcb57a-0f59-4104-a18d-d185eb003c0c",
"lmsUserIdentifier":"9991862",
"totalPoints":1.0,
"synced":false,
"version":1
},
{
"userId":"54400abe-b25d-45fe-b77c-e1a0b90f0c86",
"lmsUserIdentifier":"9991864",
"totalPoints":2.0,
"synced":false,
"version":1
},
{
"userId":"05afc973-37fe-4b6c-84ac-26b8c8255988",
"lmsUserIdentifier":"9991861",
"totalPoints":2.0,
"synced":false,
"version":1
}
],
"version":1
}
];
console.log(countSynced(data));
let users = new Map()
for (const activity in activities) {
for (const grades in activity.lmsUserGrades) {
// You mentioned false should overwrite for users with true values
if (users.has(grade.userId) && grade.synced === false) {
users.set(grade.userId, false)
} else {
users.set(grade.userId, grade.synced)
}
}
let syncedUsers = 0
let unSyncedUsers = 0
for (let synced of users.values()){
synced ? syncedUsers++ : unSyncedUsers++
}