gpt4 book ai didi

Javascript |最小和最大方法到一个 DRY 方法

转载 作者:搜寻专家 更新时间:2023-11-01 00:19:33 25 4
gpt4 key购买 nike

我有一个 min 和 max 函数,除了一个使用 Math.min 而后者使用 Math.max 之外,它们完全相同

// calculate min value
function getMinMetric(measurements, metric) {
let value = null
measurements.forEach(measurement => {
if (measurement[metric]) {
!value ? (value = measurement[metric]) : (value = Math.min(value, measurement[metric]))
}
})
return value
}

// calculate max value
function getMaxMetric(measurements, metric) {
let value = null
measurements.forEach(measurement => {
if (measurement[metric]) {
!value ? (value = measurement[metric]) : (value = Math.max(value, measurement[metric]))
}
})
return value
}


将根据以下条件返回任一函数:

function calculateStatsForMetric(stat, metric, measurements) {
if (stat === 'min') return getMinMetric(measurements, metric)
if (stat === 'max') return getMaxMetric(measurements, metric)
*****
}

我怎样才能将 minma​​x 函数合并到一个方法中以实现 DRY 方法,这样我就不会以冗余告终?

进一步:这是一个好的做法 - 或者事实上,我应该致力于让单独的函数返回单独的值(就像现在一样),这样它们就可以独立并具有关注点分离?

最佳答案

您可以在您的函数中使用 type 参数,它将是 "min""max"。然后您可以使用Bracket Notation 调用Math[type] 函数。我还更新了三元运算符。

function getMetric(type,measurements, metric) {
let value = null
measurements.forEach(measurement => {
if (measurement[metric]) {
value = !value ? measurement[metric]) : Math[type](value, measurement[metric])
}
})
return value
}

函数调用方式

getMetric('min',..., ...) //for min
getMetric('max',..., ...) //for max

关于Javascript |最小和最大方法到一个 DRY 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55088931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com