根据参数定义对象

时间:2018-10-29 20:00:25

标签: javascript

我在React应用程序中使用的第三方解决方案需要一个options对象。我正在创建一个辅助函数,它将为我创建并返回此对象。

我试图根据传递给我的辅助函数的参数找出创建该对象的最简洁方法。如果某些属性没有收到参数或null值,我想在对象中忽略它们。

创建该对象的最佳方法是什么?一种想法是从基本对象开始,然后继续使用Object.assign()添加或不添加其他属性-参见下文。我将不胜感激其他可能更干净/更整洁的建议。

export const getUser = (firstName, middleName, lastName, gender) => {

   let user = {
      firstName: firstName,
      lastName: lastName
   };

   if(typeof middleName !== "undefined" && middleName !== null && middleName.length > 0) {

      user = Object.assign({}, user, {
         middleName: middleName
      });

   }

   return user;
};

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

没有内置语法可有条件地定义属性。添加属性的最简单方法是

if (middleName) {
  user.middleName = middleName;
}

不需要Object.assign和创建不必要的中间对象。


或者反过来做:添加所有内容并删除无效内容。

const user = {
  firstName,
  middleName,
  lastName,
  gender,
};

for (const key of Object.keys(user)) {
  if (!user[key]) {
    delete user[key];
  }
}