【发布时间】:2021-11-22 23:56:51
【问题描述】:
我正在尝试根据键重新组合对象值。重组的条件是
-
密钥必须是“APTC/IndianEligibility2”或“APTC/CSR”。
-
如果这些键在资格分组映射对象中存在,则追加 如果它们的值与键“APTC”和“CSR” 钥匙退出
-
否则创建这些键并推送值。
-
推送价值观后删除“APTC/IndianEligibility2”和“APTC/CSR”。
参考预期结果
我面临的问题是“无法读取未定义 Javascript 的属性 'push'”。尝试通过引用其他堆栈溢出帖子来修复它。在过去的 2 天里一直坚持下去。
const eligibilityGroupingMap = {
"CHIP": [
"CHILD3",
"CHILD4"
],
"APTC": [
"SELF1"
],
"APTC/IndianEligibility2": [
“SPOUSE2”
],
"Ineligible": [
"CHILD7"
],
"APTC/CSR": [
"CHILD4"
] };
预期结果:
eligibilityGroupingMap = {
"CHIP": [
"CHILD3",
"CHILD4"
],
"APTC": [
"SELF1”, “SPOUSE2”, “CHILD4"
],
"CSR": [
"CHILD4"
]
"Ineligible": [
"CHILD7"
], };
代码 Fiddle
const sortedEligibilityGroupingMap = Object.fromEntries(Object.entries(eligibilityGroupingMap).sort());
const sortedMember = Object.keys(sortedEligibilityGroupingMap).reduce((accValue, currValue) => {
let array = sortedEligibilityGroupingMap[key];
if(key === 'APTC/CSR' || key === 'APTC/IndianEligibility2' || key === 'APTC/IndianEligibility3') {
// eslint-disable-next-line no-prototype-builtins
if('APTC' in sortedEligibilityGroupingMap){
acc['APTC'].push.apply(sortedEligibilityGroupingMap[key]);
} else {
acc.APTC = {};
acc.APTC = sortedEligibilityGroupingMap[key];
}
}
acc[key] = array.sort();
delete acc['APTC/CSR'];
delete acc['APTC/IndianEligibility2'];
delete acc['APTC/IndianEligibility3'];
return acc;
}, {});
console.log('sortedMember'. sortedMember);
【问题讨论】: