首页 > 解决方案 > 有没有一种优雅的方式将参数对象传递给函数?

问题描述

我有以下方法,它获取一组数据并从中创建模型的新实例。以对象的reportTemplateData形式出现,我对其进行解构,以便将其作为属性列表传递给类构造函数。

虽然这可行,但我觉得它可以更有效地完成。有没有更优雅的方法可以在一行左右做到这一点?

addReportTemplate(reportTemplateData) {
  const {
    id,
    pageId,
    profileTemplateId,
    userId,
    name,
    description,
    createdAt,
    updatedAt,
    deletedAt,
    createdBy,
    updatedBy,
    deletedBy,
    reportTemplateColumns,
  } = reportTemplateData;
  const newReportTemplate = new ReportTemplate(
    id,
    pageId,
    profileTemplateId,
    userId,
    name,
    description,
    createdAt,
    updatedAt,
    deletedAt,
    createdBy,
    updatedBy,
    deletedBy,
    reportTemplateColumns,
  );
  this.reportTemplates.push(reportTemplates);
}

编辑

值得注意的是,如果您选择const newReportTemplate = new ReportTemplate({...reportTemplateData})解决方案,则必须将数据属性与类构造函数参数精确匹配。这对我来说是一个问题,其中数据以 snake_case 的形式输入,而我的 Javascript 模型正在寻找 camelCase。

标签: javascriptjavascript-objects

解决方案


假设只有您要传递的属性在该对象中。

addReportTemplate(reportTemplateData) {
  const newReportTemplate = new ReportTemplate({ ...reportTemplateData });
  this.reportTemplates.push(reportTemplates);
}

如果您要排除一些属性,请对其进行解构。

addReportTemplate(reportTemplateData) {
  const { 
      excluded1,
      excluded2,
      ...properties,
   } = reportTemplateData;
  const newReportTemplate = new ReportTemplate({ ...properties });
  this.reportTemplates.push(reportTemplates);
}

这两种方法都需要更改 ReportTemplate 类,其中构造函数将对象作为参数。请参阅此方法如何在此笔中发挥作用的两个示例。


推荐阅读