javascript - 需要什么样的命令行来查找所有信用卡号的总和并按升序排列它们?

标签 javascript

var cc = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260'];

对每个字符串求和的函数

function highest(inputArray) {
  var currentHighest = 0;
  var largest = 0;
  var tempArray = [];
  for (var a = 0; a < inputArray.length; a++) {
    tempArray.push(inputArray[a].replace(/\D/g, ''));
  }
  function sumDigits(strA) {
    var sum = 0;
    for (var i = 0; i < strA.length; i++) {
      sum += parseInt(strA.charAt(i), 10);
    }
    return sum;
  }

组织数组中的字符串

  for (var a = 0; a < tempArray.length; a++) {
    var csum = sumDigits(tempArray[a]);
    if (csum >= currentHighest) {
      currentHighest = csum;
      largest = inputArray[a];
    }
  }
  return largest;
}
    console.log(highest(cc));

到这里,我的知识就结束了。不确定使用什么来回调数据,因此它是按顺序和总和组织的。

最佳答案

您可以使用哈希表进行总计,并根据所有数字的总和进行排序。

var cc = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260'],
    total = {};

cc.forEach(function (a) {
    total[a] = a.match(/\d/g).reduce(function (r, b) {
        return r + +b;
    }, 0);
});

cc.sort(function (a, b) {
    return total[a] - total[b];
});

console.log(total);
console.log(cc);

关于javascript - 需要什么样的命令行来查找所有信用卡号的总和并按升序排列它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40812649/

相关文章:

javascript - 通过数组访问时 classList 显示未定义,难倒了

javascript - 使用 angularjs 计算数组中的重复值

javascript - 如何摆脱 forEach 或重新构造我的函数?

javascript - 我如何使用 jquery 从左到右或从右到左滑动图像?

javascript - 手机浏览器复制网页内容如何自动添加版权?

javascript - 在 vis.js 中用最少的物理避免重叠边

javascript - 如何折叠表格中所有显示的行?

javascript - scope.$watch() 在输入键按下或 location.path 工作后未触发

javascript - dataTable - 表单提交后重新加载表

javascript - 无法正确连接字符串以创建链接