【发布时间】:2018-07-24 03:34:26
【问题描述】:
我有这个对象是诊所,关键是诊所的 id,它有一个 id 和邀请:
const clinics = {
"a0CW0000001K2F8MAK": {
"id": "a0CW0000001K2F8MAK",
"invitations": {
"56205": {
"id": "56205",
"status": "Confirmed",
},
}
},
"a0CW00000026gjsMAA": {
"id": "a0CW00000026gjsMAA",
"invitations": {}
},
"a0CW00000026gjTMAQ": {
"id": "a0CW00000026gjTMAQ",
"invitations": {
"56445": {
"id": "56445",
"status": "Cancelled",
},
}
},
"a0CW00000026gipMAA": {
"id": "a0CW00000026gipMAA",
"invitations": {
"56447": {
"id": "56447",
"status": "Confirmed",
},
"56448": {
"id": "56448",
"status": "Cancelled",
},
"56456": {
"id": "56456",
"status": "Declined",
}
}
},
"a0CW00000026gjOMAQ": {
"id": "a0CW00000026gjOMAQ",
"invitations": {}
},
"a0CW00000026gjnMAA": {
"id": "a0CW00000026gjnMAA",
"invitations": {
"56304": {
"id": "56304",
"status": "Pending",
},
}
},
}
并且我只想在邀请 -> 状态等于“已取消”时返回对象,可能有多个邀请,如果任何邀请被取消,我需要返回该对象,在此案例,返回:
const clinics = {
"a0CW00000026gjTMAQ": {
"id": "a0CW00000026gjTMAQ",
"invitations": {
"56445": {
"id": "56445",
"status": "Cancelled",
},
}
},
"a0CW00000026gipMAA": {
"id": "a0CW00000026gipMAA",
"invitations": {
"56447": {
"id": "56447",
"status": "Confirmed",
},
"56448": {
"id": "56448",
"status": "Cancelled",
},
"56456": {
"id": "56456",
"status": "Declined",
}
}
},
}
我尝试了类似的方法,但没有成功:
function filterByStatus(clinics) {
return Object.keys(clinics)
.filter(clinicId => clinics[clinicId].invitations.status === "Cancelled")
.reduce((acc, key) => Object.assign(acc, { [key]: clinics[key] }), {});
}
我该怎么做?谢谢!
【问题讨论】:
-
I tried something like this, but it didn't work- 是这样的,还是那样的?不要询问您尚未发布的代码。 “它没有用” - 以什么方式?你得到的输出是什么而不是你的预期
标签: javascript object filter reduce