【发布时间】:2019-09-24 10:07:03
【问题描述】:
我有一个辅助函数,它使用适当的查询属性构建对象。我将此对象用作我的承诺请求中的主体。重构多个 if 语句最优雅的方法是什么?这是一个函数:
getQueryParams = (query, pagination, sorting) => {
let queryParam = {}
if (pagination && pagination.pageNumber) {
queryParam.page = `${pagination.pageNumber}`
}
if (pagination && pagination.rowsOnPage) {
queryParam.size = `${pagination.rowsOnPage}`
}
if (query) {
const updatedQuery = encodeURIComponent(query)
queryParam.q = `${updatedQuery}`
}
if (sorting) {
queryParam.sort = `${sorting.isDescending ? '-' : ''}${sorting.name}`
}
return service.get(`/my-url/`, queryParam).then(result => {
return result
})
}
【问题讨论】:
-
只开始两个 if 是相似的,可以通过循环减少,其余的有单独的逻辑,所以我认为你不能减少太多
-
指导您的服务检查空/未定义/空值,并使用默认值传递所有键。前任。
let queryParam = {page: pagination.pageNumber || undefined, ...};。一些默认值也可以在参数列表中定义。
标签: javascript ecmascript-6 ecmascript-2016