ES6对象分配简化

时间:2017-10-30 11:47:42

标签: javascript object ecmascript-6 ecmascript-next

我有以下代码(运作良好)

const action = {
  type: types.CHANGE_ADMIN_USER_PASSWORD,
  password: initialState.admin.editUserPassword.password,
  confirm: initialState.admin.editUserPassword.confirmPassword,
  ...input
};

其中input{ password: 'hello' }{ confirm: 'world' }。值可以不同,但​​只存在一个键。

问题:有没有办法简化代码?例如,我想只有initialState.admin.editUserPassword一次。 UPD:initialState.admin.editUserPassword有两个以上的属性,因此我无法将所有该对象都包含在action中。

2 个答案:

答案 0 :(得分:2)

最简单的方法是destructuring

const { password, confirmPassword } = initialState.admin.editUserPassword;

const action = {
  type: types.CHANGE_ADMIN_USER_PASSWORD,
  password,
  confirm: confirmPassword,
  ...input
};

如果嵌套对象(initialState.admin.editUserPassword)只有这两个字段(passwordconfirmPassword),并且不将confirmPassword重命名为confirm,则可以甚至做以下事情:

const action = {
  type: types.CHANGE_ADMIN_USER_PASSWORD,
  ...initialState.admin.editUserPassword,
  ...input
};

答案 1 :(得分:1)

您可以在此代码上方使用销毁:

const {password, confirmPassword} = initialState.admin.editUserPassword;
const action = {
  type: types.CHANGE_ADMIN_USER_PASSWORD,
  password: password,
  confirm: confirmPassword,
  ...input
}