首页 > 解决方案 > 如何重构 Javascript 中的方法

问题描述

我写了以下3种方法:

方法编号 1:

var carYear = cars.filter(function(item) {
  if (item.year > 1999) {
    return item;
  };
})

方法编号 2

var carVolvo = cars.filter(function(item) {
  if (item.make == 'Volvo') {
    return item;
  };
});

方法编号 3

var carPrice = cars.filter(item => item.price < 5000);

如何重构将过滤器文本作为参数的方法?

我怎样才能将所有这些重构为一种方法,将过滤器文本和类型作为参数?

标签: javascriptrefactoring

解决方案


我会选择 Nina Scholz 的方法。无论如何作为对 OP 问题的 100% 合规答案

如何重构将过滤器文本作为参数的方法?

function filterSwitcher(filterText) {
    switch(filterText) {
        case "year":
            return item => item.year > 1999
        case "make":
            return item => item.make == 'Volvo'
        case "price":
            return item => item.price < 5000
    }
}

cars.filter(filterSwitcher("price"))

推荐阅读