我正在做一个非常初学者,自学成才(迄今为止)的编程学生。我获得了一系列信用卡号码:
var myArray = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893- 7978', '4556-4242-9283-2260'];
我要删除短划线,获取每个信用卡号的各个整数的总和,并返回最高金额。
我已正确删除破折号:
var myArray = ['4916-2600-1804-0530', '4779-252888-3972', '4252-278893-7978', '4556-4242-9283-2260'];
var noDashes = myArray.map(function(x){ return x.replace(/-/g,"") });
console.log(noDashes);
接下来,我将每个字符串转换为整数:
var strToInt = noDashes.map(function (x) {
return parseInt(x, 10);
});
console.log(strToInt);
但现在我无法弄清楚如何迭代数组并将每个长整数转换为2D数组中的单个整数,如下所示:
var newArray = [[4,9,1,6,2,6,0,0,1,8,0,4,0,5,3,0], [4,7,7,9,2,5,2,8,8,8,3,9,7,2], [4,2,5,2,2,7,8,8,9,3,7,9,7,8], [4,5,5,6,4,2,4,2,9,2,8,3,2,2,6,0]];
我知道我需要使用for循环和可能的.split方法,但是我已经尝试了两天,进行了一百万次不同的搜索,但仍然没有找到任何有用的东西。我已经在网上找到了这个练习的完整答案,但是它使用的代码方式对我的理解来说太高级了,所以我一直试图将问题分解成我能理解的块。
我会很感激一些指导!谢谢!
答案 0 :(得分:0)
var myArray = [
'4916-2600-1804-0530',
'4779-252888-3972',
'4252-278893-7978',
'4556-4242-9283-2260'
];
var sums = myArray.map(function (ccValue) {
return ccValue.replace(/[^0-9]/g, '').split('');
})
.reduce(function (a, b) {
return a + b;
});
var largest = Math.max.apply(Math, sums);
console.log(largest);
答案 1 :(得分:0)
要获得总和reduce
:
oneArray.reduce(function(a,b) { return a+b })
要将其应用于每个,请使用map
:
newArray.map(function(x) { return x.reduce(function(a,b) { return a+b }) })
要获得最大总和,请使用Math.max:
Math.max.apply(null, newArray.map(function(x) { return x.reduce(function(a,b) { return a+b }) }))
为您额外锻炼:是哪个卡号?