javascript - 如何查找存储在数组中的字符串中的数字总和

标签 javascript arrays loops

我已经想出如何从单个字符串计算数字的值,作为示例..

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'

我一直在试图弄清楚现在如何将其应用于数字数组..

  1. 包含函数中所需的所有变量和代码。
  2. 让该函数接受一个参数,该参数将是一组信用卡号字符串。
  3. 确定每个信用卡号的数字总和。
  4. 确定哪个信用卡号的数字总和最大。
  5. 使用返回单以原始形式退回所需的卡号

不胜感激

最佳答案

您可以编写一个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/

相关文章:

python - 为什么使用不同的循环方法(Python)循环速度会有很大差异?

python - 加速列表和 for 循环 python

javascript - JS传递值并选择返回var

javascript - ES6中如何获取DOM元素?

Javascript 翻转带有内容的 div

php - Ajax 发布在 asp 中失败

调用 printf 更改地址 C 传递的数组

arrays - Ruby n 个不同大小的数组中的 2 个的独特组合

java - 在java中的方法中的特定索引处使用数组

c - 带 EOF 的额外循环