javascript - 如何使用reduce删除对象数组中的空值?
问题描述
我正在尝试删除 null 或空值:
const generated_salary = [{"f_name":"Cy","deduction":{"11":{"amount":736,"wrk_pay_id":11}}},{"f_name":"Hel","deduction":{"10":{"amount":714.29,"wrk_pay_id":10},"14":{"amount":500,"wrk_pay_id":14}}},{"f_name":"edd","deduction":{"13":{"amount":857.14,"wrk_pay_id":13}}},{"f_name":"JAY","deduction":{"":{"amount":"","wrk_pay_id":""}}}]
const deductions = generated_salary.reduce((c, { deduction }) => ({
...c,
...deduction
}), {})
console.info("deductions =", deductions)
我想要达到的结果:
info: deductions = {
"10": {
"amount": 714.29,
"wrk_pay_id": 10
},
"11": {
"amount": 736,
"wrk_pay_id": 11
},
"13": {
"amount": 857.14,
"wrk_pay_id": 13
},
"14": {
"amount": 500,
"wrk_pay_id": 14
}
]
解决方案
一种方法是仅在内部非空c
时向结果对象添加新条目:amount
deduction
const deductions = generated_salary.reduce( (c, {deduction}) => {
for (let [key, value] of Object.entries(deduction)) {
if (value.amount) c[key] = value;
}
return c;
}, {});
如果你想让它更漂亮:
const deductions = generated_salary.reduce( (c, {deduction}) => ({
...c,
...Object.fromEntries(Object.entries(deduction).filter(([key, value]) => value.amount))
}), {});
...但我个人觉得这比for
循环更难遵循。YMMV。
推荐阅读
- java - 天蓝色 ci cd tomcat 错误。错误:2021-04-22T04:58:28.6149523Z ##[错误]错误:/usr/bin/curl 失败,返回码:22
- nltk - 为什么在标记时会得到“预期的字符串或类似字节的对象”?
- ssms - Microsoft SQL Server 管理工作室 (2012)
- python - 当用户与列表交互时,如何获取 QListWidget 的所有选定项目的 ROW NUMBERS?
- r - 使用 pivot_wider 在 ggplot2 中按组绘制 geom_ribbon
- python - 出现此错误的任何原因?在查看 ryu 拓扑查看器时遇到问题
- python - 如何根据特征创建自定义损失函数?
- javascript - 如何在 JavaScript 中的函数内部完全调用 API 后返回值?
- python - pandas numpy.ndarray 对象没有属性
- spring-boot - Spring Boot / MVC - 如何自定义控制器方法的返回类型处理?