描述
我收到了来自我在NODE后端上调用的Service的响应。
然后,我以一种更加友好的格式来转换我的回复,就像这样;
export default (response) => {
const {
limit,
debt,
outstanding
} = response.object;
const transformedData = {
outstanding: retrieveAmounts(outstanding),
limit: retrieveAmounts(limit),
debt: retrieveAmounts(debt)
};
return _omitBy(transformedData, value => value === null);
};
如您所见,我在每个项目上都运行一个函数
retrieveAmounts(value)
。const retrieveAmounts = ({ amount, code }) => ({
amount: isStringDefined(amount) ? amount : null,
currencyCode: isStringDefined(code) ? code : null
});
更新资料
retrieveAmounts()
依次调用isDefinedString
,它检查提供的类型和长度,就像这样;const isDefinedString = value => typeof value === 'string' && value.length > 0;
问题是两者同时存在。债务和限额是必需的,并且将始终返回-未偿还不是。如果没有任何显示,则对象键将根本不存在。
这是
retrieveAmounts()
抛出错误的原因,因为它无法查找未定义的amount
或code
-因为它们不存在,因为键不存在,所以它们不存在。如何设置对象密钥的格式(如果存在),如果不存在则返回null?这样,
retrieveAmounts()
不会抛出错误,而我只需向我的前端应用程序提供limit:null
即可。 最佳答案
'undefined'不能被解构。销毁之前,您需要检查它是否未定义。
let limit = {'amount': '1000', 'code': '£'}, outstanding = undefined, debt = {'amount': '900', 'code': '£'};
const retrieveAmounts = amountStruct => {
if (typeof amountStruct === 'undefined')
return null;
let {amount, code} = amountStruct;
return {
amount: isStringDefined(amount) ? amount : null,
currencyCode: isStringDefined(code) ? code : null
};
};
内联@ alex35的代码。
const retrieveAmounts = (amountStruct) => ((typeof amountStruct === 'undefined') ? null : {
amount: isStringDefined(amountStruct.amount) ? amountStruct.amount : null,
currencyCode: isStringDefined(amountStruct.code) ? amountStruct.code : null
});
关于javascript - 如果对象 key 存在,如何格式化响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55001389/