首页 > 解决方案 > 根据条件将值添加到对象中的属性

问题描述

有没有更简单的方法来实现下面的代码片段,我有一个基于值选择的对象,我需要将该值添加到一个属性中的一个并将另一个属性设为零。

let obj = {
  credit: 0,
  debit: 0,
  userType: formData.userType.value
};

switch (formData.userType.value) {
  case USER_TYPES.NORMAL:
    obj = {
      ...obj,
      credit: formData.amount,
    };
    break;
  case USER_TYPES.GREEDY:
    obj = {
      ...obj,
      debit: formData.amount,
    };
    break;
  default:
    obj = {
      ...obj,
    };
    break;
}

console.log(obj)

标签: javascript

解决方案


这应该有效:

const propMap = { [USER_TYPES.NORMAL]: 'credit', [USER_TYPES.GREEDY]: 'debit'};
if (propMap[formData.userType.value]) {
   obj[propMap[formData.userType.value]] = formData.amount
}

推荐阅读