Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果存在对象键,如何格式化响应?_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

Javascript 如果存在对象键,如何格式化响应?

Javascript 如果存在对象键,如何格式化响应?,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,说明 我在我的节点后端调用的服务返回了一个响应 然后,我将我的回答转换为一种更友好的形式,就像这样 export default (response) => { const { limit, debt, outstanding } = response.object; const transformedData = { outstanding: retrieveAmounts(outstanding), limit: retrieveAmounts

说明

我在我的节点后端调用的服务返回了一个响应

然后,我将我的回答转换为一种更友好的形式,就像这样

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

您可以在
retrieveAmounts
函数中放置默认参数,因此在retrieveAmounts函数中放置未定义参数不会产生错误

const retrieveAmounts = (outstanding = { amount: null, code: null }) => ({  // << here
    amount: isStringDefined(outstanding.amount) ? amount : null,
    currencyCode: isStringDefined(outstanding.code) ? code : null
});

const retrieveAmounts=(未决={amount:null,code: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
});

这不起作用:-(它将金额和代码带到范围之外,我得到
ReferenceError:amount未定义
我用
未完成的金额
未完成的金额
。如果参数未定义,我得到
{amount:null,currencyCode:null}
。我没有接受你的答案,因为上面的答案允许将limit返回为null。这里的默认值是什么?返回对象及其属性。+1尽管对于有用的输入,我在传递linter周围的复杂性规则时遇到了问题。还有其他地方可以粘贴未定义的检查吗?尝试了一个函数-中断