我在将数组的这些元素添加在一起时遇到问题。破折号似乎抑制了每个变量的添加



我试图让下面的代码分别添加元素中的每个数字,而不是整个数组在一起,但破折号似乎阻止循环计算每个元素的总和。我似乎做不到,所以它会为变量保留任何长度的数字。任何帮助都非常感谢!

var creditNum = [];
creditNum[0] = ('4916-2600-1804-0530');
creditNum[1] = ('4779-252888-3972');
creditNum[2] = ('4252-278893-7978');
creditNum[3] = ('4556-4242-9283-2260');
var allNum = [];
var total = 0;
var num = 0;
var cnt = 0;
for (var i = 0; i < creditNum.length; i++) {
  num = creditNum[i];
  for (var j = 1; j <= num.length; j++) {
    var num = creditNum[i].substring(cnt, j);
    console.log(creditNum[i].charAt(cnt));
    console.log(cnt, j);
    cnt = cnt + 1;
  }
  if (num != "-") j = j++;
  console.log(parseInt(num));
}
console.log(total);

假设目的是添加'4916-2600-1804-0530'并将值输出为49,则以下修改将实现此目的。

var creditNum = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978','4556-4242-9283-2260'];
for (var i = 0; i < creditNum.length; i++) {
  var num = creditNum[i].replace(/-/g, '');
  var total = 0;
  for (var j = 0; j < num.length; j++) {
    total += Number(num[j]);
  }
  
  console.log(creditNum[i], total);
}

使用原生数组方法,代码可以重构如下:

var creditNumbers = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978','4556-4242-9283-2260'];
creditNumbers.forEach(function(creditNumber) {
  var num = creditNumber.replace(/-/g, '').split('');
  var total = num.reduce(function(tally, val) {
    return tally += Number(val);
  }, 0);
  
  console.log(creditNumber, total);
});

最新更新