[英]Refactoring a destructuring into an object destructuring
我正在重构我的代码,这涉及将大量的let
语句转换为一个名为personDetails
的对象:
personDetails = {
firstName: '',
lastName: '',
zipcode: 'xyz',
age: 20,
gender: 'm'
}
目前,我正在解构从我的数组返回的值,如下所示:
[firstName, lastName] = getNames(zipcode, age, gender)
这工作正常。 但是现在我要切换到一个对象,如何使用返回值更新该对象? 我将把对象作为这样的参数传入:
getNames(personDetails)
我必须做这样的事情吗?
personDetails = getNames(personDetails)
被调用的函数可能看起来像这样(缩写):
const getNames(personDetails) => {
personDetails.firstname = 'Jack'
personDetails.lastName = 'Jones'
}
1)你的箭头函数有一个错字,你必须在参数前用=
声明它,像这样:
const getNames = (personDetails) => { // Correct
const getNames(personDetails) => { // Incorrect
2)在您的函数中,您没有修改对象键,而是创建了一个新的键。 请记住,如果您使用大写或小写字母,则对象键会有所不同, firstName
和firstname
不是同一个键。
3)最后,当你在你的函数中创建一个参数时,不要用与全局对象相同的名称来声明它,因为它可能会产生意想不到的结果。 然后,您不需要解构对象,只需返回完整的对象即可。
let personDetails = { // Using let firstName: '', lastName: '', zipcode: 'xyz', age: 20, gender: 'm' }; const getNames = (obj) => { // obj is the argument obj.firstName = 'Jack'; obj.lastName = 'Jones'; return obj; // Return complete object } personDetails = getNames(personDetails); console.log(personDetails);
如果你想解构对象,你也可以用与数组相同的方式来做,但我不推荐它,因为它使代码不太清楚:
const personDetails = { // Using const firstName: '', lastName: '', zipcode: 'xyz', age: 20, gender: 'm' }; const getNames = (obj) => { // obj is the argument obj.firstName = 'Jack'; obj.lastName = 'Jones'; return [obj.firstName, obj.lastName]; // Return part of object as an array } [personDetails.firstName, personDetails.lastName] = getNames(personDetails); console.log(personDetails);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.