我已经想出如何从单个字符串计算数字的值,作为示例..
var sum = "13-2-10-7-3".split('-').reduce(function(x, y) {
return parseInt(x)+ parseInt(y);
}); // Value of 35
我有兴趣找出信用卡号的数字总和最大的数字。如果不止一个具有相同的最大数字总和,我们希望列表中的最后一个具有该总和。
这是信用卡号的示例数组:
['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260']
在上面的示例数组中,数字加起来分别为 49、81、81 和 64。由于有两个具有相同的总和,该函数应返回具有该总和的最后一个,在本例中为 '4252-278893-7978'
我一直在试图弄清楚现在如何将其应用于数字数组..
- 包含函数中所需的所有变量和代码。
- 让该函数接受一个参数,该参数将是一组信用卡号字符串。
- 确定每个信用卡号的数字总和。
- 确定哪个信用卡号的数字总和最大。
- 使用返回单以原始形式退回所需的卡号
不胜感激
最佳答案
您可以编写一个maxBy
函数,它将您的函数作为参数来确定数组中的最大元素。这将使您无需太多工作即可轻松调整代码。
var cards = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260'];
function maxBy(arr, func) {
return arr.reduce(function(max, val) {
return func(val) >= func(max) ? val : max;
}, arr[0]);
}
function sumCC(card) {
return card.split(/-|/).reduce(function(sum, val) {
return sum + parseInt(val, 10);
}, 0);
}
console.log(maxBy(cards, sumCC));
这是一个有用的实用函数。 Lodash 实用程序库还提供了一个 _.maxBy
.
关于javascript - 如何查找存储在数组中的字符串中的数字总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755062/