node.js - 当 api 可能返回数组或单个对象时避免重复代码
问题描述
我正在使用 API 来查询汽车借记卡。如果汽车有多个借方,API 会返回一个借方数组。如果它只有一个,它会返回一个借方对象(不是一个元素的数组)。
问题是我必须复制此响应的所有反序列化,检查属性是数组还是单个对象。
const debits = []
if (car.debits.length > 0) {
car.debits.forEach((debit: any) => {
debits.push({
id: uuidv1(),
description: debit.description,
label: debit.label,
amount: parseInt(debit.amount, 10)
})
})
} else {
debits.push({
id: uuidv1(),
description: debit.description,
label: debit.label,
amount: parseInt(debit.amount, 10)
})
}
有没有办法简化这个?我只展示了一个小例子,但对象要大得多,还有许多其他属性我必须做同样的事情。
解决方案
如果您可以控制 API,您可能应该让它返回一个包含单个元素的数组。如果不是,则在函数开始时将其强制放入一个数组中。
car.debits = car.debits.length ? car.debits : [car.debits]
如果 car.debits.length 未定义,这意味着它不是数组,则创建一个数组并将对象放入其中
推荐阅读
- python - 无法使用 Kivy Complete VM 为服务应用程序构建 apk
- python - 为什么在python中进行网络抓取时我一直没有得到
- go - Go 中 t-digest 数据结构的线程安全实现?
- python - 根据关系表减去值
- batch-file - 如何获取为当前 cmd.exe 实例设置的环境变量?
- node.js - DNS 解析主机文件中映射到本地主机的域的超时/延迟
- python - 如何将时间偏移应用于熊猫时间戳间隔?
- c# - 如何通过 C# 中的值选择特定的复选框项
- docker - 如何将 docker 镜像从 USS 复制到 IBM zCX 服务器
- javascript - 我可以使用 Javascript 中的自引用函数定义对象的属性吗?