首页 > 解决方案 > 当 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)
    })
}

有没有办法简化这个?我只展示了一个小例子,但对象要大得多,还有许多其他属性我必须做同样的事情。

标签: node.js

解决方案


如果您可以控制 API,您可能应该让它返回一个包含单个元素的数组。如果不是,则在函数开始时将其强制放入一个数组中。

car.debits = car.debits.length ? car.debits : [car.debits]

如果 car.debits.length 未定义,这意味着它不是数组,则创建一个数组并将对象放入其中


推荐阅读