- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将这个使用 pickBy 和 mapValues 的函数从 lodash 转换为不使用 lodash 的函数。
import mapValues from 'lodash/mapValues';
import pickBy from 'lodash/pickBy';
function clinicsWithInvitations(upcomingClinics) {
const upClinics = upcomingClinics.clinics;
const upInvitations = upcomingClinics.invitations;
const getInvitations = id => pickBy(upInvitations, inv => inv.clinicId === id);
const mergeInvitations = (clinic, clinicId) => ({
...clinic,
invitations: getInvitations(clinicId),
});
return mapValues(upClinics, mergeInvitations);
}
我试过了,没用
function clinicsWithInvitations(upcomingClinics) {
const upClinics = upcomingClinics.clinics;
const upInvitations = upcomingClinics.invitations;
const getInvitations = clinicId =>
Object.keys(upInvitations).reduce((acc, invId) => {
const inv = upInvitations[invId];
return inv.clinicId === clinicId ? { ...acc, [inv.clinicId]: inv } : acc;
}, {});
const mergeInvitations = (acc, clinicId) => ({
...acc,
[clinicId]: {
...upClinics[clinicId],
invitations: getInvitations(clinicId),
},
});
return Object.keys(upClinics).reduce(mergeInvitations, {});
}
我想做的是将两个对象合并为一个对象,我试图将诊所与邀请相关联,同时考虑到 clinicId
,所以我有这个:
const upcomingClinics = {
"clinics": {
"a0CW000000271LuMAI": {
"id": "a0CW000000271LuMAI",
"contact": {
"name": null,
"phone": null,
"email": null
},
"shifts": {
"teamLeads": 1,
"healthTechs": 1
}
},
"a0CW00000026gikMAA": {
"id": "a0CW00000026gikMAA",
"contact": {
"name": null,
"phone": null,
"email": null
},
"shifts": {
"teamLeads": 1,
"healthTechs": 4
}
}
},
"invitations": {
"56392": {
"id": "56392",
"clinicId": "a0CW00000026gikMAA"
},
"56393": {
"id": "56393",
"clinicId": "a0CW00000026gikMAA"
},
"56402": {
"id": "56402",
"clinicId": "a0CW00000026gikMAA"
},
"56427": {
"id": "56427",
"clinicId": "a0CW000000271LuMAI"
},
"56428": {
"id": "56428",
"clinicId": "a0CW000000271LuMAI"
}
}
}
这是期望的输出,但不会引起任何突变。
const upcomingClinics = {
"clinics": {
"a0CW000000271LuMAI": {
"id": "a0CW000000271LuMAI",
"contact": {
"name": null,
"phone": null,
"email": null
},
"shifts": {
"teamLeads": 1,
"healthTechs": 1
}
"invitations": {
"56427": {
"id": "56427",
"clinicId": "a0CW000000271LuMAI"
},
"56428": {
"id": "56428",
"clinicId": "a0CW000000271LuMAI"
}
}
},
"a0CW00000026gikMAA": {
"id": "a0CW00000026gikMAA",
"contact": {
"name": null,
"phone": null,
"email": null
},
"shifts": {
"teamLeads": 1,
"healthTechs": 4
}
"invitations": {
"56392": {
"id": "56392",
"clinicId": "a0CW00000026gikMAA"
},
"56393": {
"id": "56393",
"clinicId": "a0CW00000026gikMAA"
},
"56402": {
"id": "56402",
"clinicId": "a0CW00000026gikMAA"
},
}
}
},
}
最佳答案
您当前的尝试看起来非常接近,但我认为您有一个小错字。这:
const getInvitations = clinicId =>
Object.keys(upInvitations).reduce((acc, invId) => {
const inv = upInvitations[invId];
return inv.clinicId === clinicId ? { ...acc, [inv.clinicId]: inv } : acc;
}, {});
...正在使用 [inv.clinicId]
作为键,当 invitations
属性为您想要的 invId
时由邀请 ID 键入:
const getInvitations = clinicId =>
Object.keys(upInvitations).reduce((acc, invId) => {
const inv = upInvitations[invId];
return inv.clinicId === clinicId ? { ...acc, [invId]: inv } : acc;
}, {});
关于javascript - 将 pickBy 和 mapValues 从 lodash 转换为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412123/
我有一个看起来像这样的对象: let documents = {"A": [{"document":"test1", "serial":"123"}, {"document":"test2", "se
你好,我有一个问题要使用 lodash 重构我的代码,我做了一个程序来计算一个对象的整数的平均值。我想使用 _.pickBy 而不是 _.each。 这是我的带有 _.each 的程序: var my
我正在尝试使用 "lodash": "^4.17.10" 来过滤一个对象。 请参阅下面我的最小可行示例: const obj = { "2": { "title": "GeFo
如何在 JavaScript 中制作 lodash 的 pickby 功能?我在“you don't need lodash”中找到了以下内容 function pickBy(object) {
我正在尝试将这个使用 pickBy 和 mapValues 的函数从 lodash 转换为不使用 lodash 的函数。 import mapValues from 'lodash/mapValues
一个简单的问题,我如何通过管道传递 pickBy 身份并包含值为零的 Prop 。目前这个例子会省略零 let linkType = { name: 'zac', money: 0,
我是一名优秀的程序员,十分优秀!