繁体   English   中英

将解构重构为对象解构

[英]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)在您的函数中,您没有修改对象键,而是创建了一个新的键。 请记住,如果您使用大写或小写字母,则对象键会有所不同, firstNamefirstname不是同一个键。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM