【问题标题】:How to refactor the similar methods into reusable common method?如何将类似的方法重构为可重用的通用方法?
【发布时间】:2021-07-16 05:54:20
【问题描述】:

我有这 3 种方法,它们彼此非常相似。唯一的区别是它们有不同的键来获取相应的数据。谁能告诉我如何才能最好地将其重新格式化为一种方法,而不是使用 3 种类似的方法?

export function getPayloadObject(action) {
  let result = action.payload.map(data => {
    return {
      name: data['DSTR_NR'].value,
      value: data['Desc'].value
    }
  }, [])
  return result;
}

export function getPayloadObject2(action) {
  let result = action.payload.map(data => {
    return {
      name: data['PROCESS_NM'].value,
      value: data['PROCESS_ID'].value
    }
  }, [])
  return result;
}

export function getPayloadObject3(action) {
  let result = action.payload.map(data => {
    return {
      name: data['CD_DESC'].value,
      value: data['SUBQUEUE_CD'].value
    }
  }, [])
  return result;
}

【问题讨论】:

    标签: javascript function methods ecmascript-6


    【解决方案1】:

    这里唯一改变的部分是名称和值键。我们可以将这两个作为函数参数,并在函数中使用它来检索名称和值。

    export function getPayloadObject(action, nameKey, valueKey) {
      let result = action.payload.map(data => {
        return {
          name: data[nameKey].value,
          value: data[valueKey].value
        }
      }, [])
      return result;
    }
    

    并像这样使用它:

    getPayloadObject(action, 'DSTR_NR', 'Desc');
    getPayloadObject(action, 'PROCESS_NM', 'PROCESS_ID');
    getPayloadObject(action, 'CD_DESC', 'SUBQUEUE_CD');
    

    【讨论】:

    • 完美,正是我想要的。谢谢!
    【解决方案2】:

    我觉得你可以试试:

    export function getPayloadObject(action, name, value) {
      let result = action.payload.map(data => {
        return {
          name: data[name].value,
          value: data[value].value
        }
      }, [])
      return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2016-03-07
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多