gpt4 book ai didi

javascript - JS 数学方法问题 : function is removing multiple min/max values (I think? )

转载 作者:行者123 更新时间:2023-11-30 07:49:10 25 4
gpt4 key购买 nike

我正在做一个编码挑战,我偶然发现了一个我认为存在于 Math.min 和 Math.max 方法中的问题。该函数的目标是在删除最小值和最大值后返回数组的总和(但每个值中只有一个,例如 [1,1,2,3,3] 应该只删除一个 1 和 3)。其他规则为空数组、单值数组和 null 返回 0 - 这部分似乎工作正常。

我运行了一些测试,发现我的函数正在过滤多个最小值和最大值。例如,对于 sumArray([ 6, 2, 1, 1, 8, 10 ])

,我的函数返回 16 而不是 17

const sumArray = array => {
const minMax = num => {
return num !== Math.max(...array) && num !== Math.min(...array);
};
const reducer = (total, num) => {
return total + num;
};
// len check to prevent empty arrays after min/max removal
if (array === null || array.length <= 2) {
return 0
}
return array.filter(minMax).reduce(reducer);
}
console.log(sumArray([6, 2, 1, 1, 8, 10]));

我正在学习 JS,所以也许我什至没有解决这里的真正问题。我只知道该函数适用于所有测试用例,但具有多个最小值或最大值的测试用例除外。希望从中学习和改进,因为这是我第一次玩数组。谢谢。

最佳答案

我真的不想做任何过滤,只需在对数组求和后删除一次最小值和一次最大值:)

const sumArray = array => {
const reducer = (total, num) => {
return total + num;
};
// len check to prevent empty arrays after min/max removal
if (array === null || array.length <= 2) {
return 0
}
const min = Math.min( ...array );
const max = Math.max( ...array );
return array.reduce(reducer) - min - max;
}
console.log(sumArray([6, 2, 1, 1, 8, 10]));

您的原始代码不起作用(实际上是“昂贵的”,因为您在每次迭代时都重新计算最小值和最大值),因为您将删除所有最小值和所有最大值,而不是一次,正如您解释的那样规则是。

关于javascript - JS 数学方法问题 : function is removing multiple min/max values (I think? ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57091479/

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