gpt4 book ai didi

javascript - 如何使用 ES6 对象传播来更新数组中的对象?

转载 作者:行者123 更新时间:2023-11-30 19:48:07 27 4
gpt4 key购买 nike

我有以下来自响应的对象数组:

const baseInput = [{
PaymentRequirementsDetail:
{ dateDue: '12/02/2019',
outstandingMinimum: { Money: { amount: '5.20', code: 'GBP' } },
overlimit: { Money: { amount: '345.20', code: 'GBP' } },
arrears: { Money: { amount: '345.20', code: 'GBP' } } }
},
{ Account: {},
AccountId: '00000012345',
CardBrand: 'SOMEBRAND',
isAccountElibible: false,
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy',
suffix: 'Dr' },
Delinquency: { monthsInArrears: 0, isOverlimit: true } }]

然后我用一堆函数转换响应,并返回一个友好的、格式化的上述版本。

const baseOutput = transform(baseInput);

返回:

   {    name: 'Mr James Jamesy, Dr',
cardBrand: 'SOMEBRAND',
isAccountElibible: false,
delinquency: { monthsInArrears: 0, isOverlimit: true },
dateDue: '12/02/2019',
outstandingMinimumAmount: 'GBP, 5.20',
overlimitAmount: 'GBP, 345.20',
arrearsAmount: 'GBP, 345.20' }

我现在想对此进行测试并生成一些快照。

我可以将上面的代码复制/粘贴到我的测试用例中,并在我执行断言时更改值,效果很好。像这样;

    test('should omit suffix if it is undefined', () => {
const input = [{
PaymentRequirementsDetail:
{ dateDue: '12/02/2019',
outstandingMinimum: { Money: { amount: '5.20', code: 'GBP' } },
overlimit: { Money: { amount: '345.20', code: 'GBP' } },
arrears: { Money: { amount: '345.20', code: 'GBP' } } }
},
{ Account: {},
AccountId: '00000012345',
CardBrand: 'SOMEBRAND',
isAccountElibible: true,
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy' },
Delinquency: { monthsInArrears: 0, isOverlimit: true } }];

const output = transform(input);

expect(baseOutput).toMatchDiffSnapshot(output);
});

这将根据需要生成我的快照,我将能够清楚地看到有后缀的版本和没有后缀的版本之间的区别。

不过,我相信有一种更简洁的方法可以使用对象展开运算符来执行此操作。而不是上面的所有代码,我应该留下;

 const input = [{
...baseInput,
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy'
}
}];

但是,我无法以某种方式利用传播运算符来实现这一点。谁能看到我的错误在哪里?

最佳答案

您的 baseInput 是一个包含两项的数组。传播运算符适用于数组或对象,您在这里所做的是将数组传播到目标对象中。

如果您的模型没有改变,您可以像这样简单地将索引对象传播到您的目标中:

const input = [{
...baseInput[0]
},{
...baseInput[1],
Customer:
{ salutation: 'Mr',
givenName: 'James',
familyName: 'Jamesy'
}
}];

https://stackblitz.com/edit/typescript-imcqkh?file=index.ts

关于javascript - 如何使用 ES6 对象传播来更新数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54768339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com