gpt4 book ai didi

JavaScript Array.reduce 除法

转载 作者:行者123 更新时间:2023-12-01 03:54:50 32 4
gpt4 key购买 nike

我的应用程序中有使用 array.reduce 将数字相乘的代码。它看起来像这样:

// Private function to multiply field values together
function _multipleFields(product, fields) {

// Calculate our total
var total = fields.reduce(function (total, field) {

// Get our number from our field
var fieldValue = helper.getPropertyValue(product, field.trim()),
number = _extractNumber(fieldValue);

return total * number;
}, 1);

// Return our total
return total;
};

我想使用类似的逻辑来划分数字。我以为我可以只更改运算符,但第一次迭代中的 total 等于 1。对于乘法来说这没问题,但对于除法则不然。

有人可以帮我吗?

最佳答案

如果您的目的是生产例如((a/b)/c) 给定输入数组 [a, b, c] 那么你应该省略“初始值”字段,因为除法运算符没有“恒等”值,就像“0”是加法的恒等,“1”是乘法的恒等。

function divideArray(array) {
return array.reduce(function(total, number) {
return total / number;
});
}

如果仅提供单个值,这将减少(双关语不是真正的意图)仅返回原始值,因为根据定义,如果仅提供单个值,reduce 函数不会调用其回调.

通过适当的关注点分离和将功能简化为最小的可测试单元,您的整个代码可以减少为:

function _getFieldNumber(product, field) {
return _extractNumber(helper.getPropertyValue(product, field.trim()));
}

function _getFieldNumbers(product, fields) {
return fields.map(_getFieldNumber.bind(this, product));
}

function _multipleFields(product, fields) {
return _getFieldNumbers(product, fields).reduce(multiply, 1);
}

function _divideFields(product, fields) {
return _getFieldNumbers(product, fields).reduce(divide);
}

function multiply(a, b) { return a * b; }
function divide(a, b) { return a / b; }

关于JavaScript Array.reduce 除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855528/

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