2017-01-01 4 views
-3

Я заинтересован в поиске номера кредитной карты, цифры которой составляют наибольшее количество. Если более одной цифры имеют одну и ту же самую большую сумму цифр, я хочу, чтобы последняя была в списке с этой суммой.нахождение наибольшей суммы массива кредитных карт

Я пытаюсь написать одну функцию, которая принимает один аргумент. Этот аргумент будет массивом номеров кредитных карт. Предположим, что в массиве может быть любое количество номеров кредитных карт, и каждый из них представляет собой строку цифр и тире. Функция должна вернуть номер кредитной карты с наибольшей суммой цифр.

Вот что я так далек

function getSum(stringLength) { 
    var stringLength = ['1476-0089-5132-7420', '2034-6002-3978-5567', '6647-1123-5895-0038']; 
    var i; 
    for (i = 0; i < stringLength; i++); 
    for (string = 0; string < [3]; stringLength++); 
    //stringLength + i =Sum ; 

    if (0 > 1, 2) { 
     return string(0); 
    } else if (1 > 0, 2) { 
     return string(1); 
    } else(2 > 1, 0) { 
     return string(2); 
    } 
    console.log('1476-0089-5132-7420', '2034-6002-3978-5567', '6647-  1123-5895-0038'); 
    console.log('The Larget Sum is:' + true); 
    } 
    /*criteria for code: Contain all variables and code needed within  a function. 
    Have that function take one argument which will be an array of credit card number strings. 
    Determine the sum of digits for each credit card number. 
    Determine which credit card number has the last largest sum of digits. 
    Use a return statement to return the required card number in its’ original form.*/ 
+3

Этот код является беспорядок. 'for (i = 0; i Barmar

+0

'stringLength ++' не имеет смысла, поскольку 'stringLength' является массивом, а не числом. Что означает 'if (0> 2, 3)' должно означать? – Barmar

+0

Что означает 'return string (0)'? Нет функции 'string()', 'string' - это имя переменной во втором цикле' for'. – Barmar

ответ

0

Вы можете попробовать этот подход:

Примечание: ; используется для завершения заявления, поэтому, когда вы делаете for(...); цикл заканчивается, и это делает ничего не делать.

var cardNos = ['1476-0089-5132-7420', '2034-6002-3978-5567', '6647-1123-5895-0038']; 
 

 
var largestSum = cardNos.reduce(function(p,c){ 
 
    return Math.max(p, getSumOfDigits(c)) 
 
}, 0); 
 

 
function getSumOfDigits(str){ 
 
    var s = str.replace(/[^0-9]/g, '').split(""); 
 
    return s.reduce(function(p,c){ return +p + +c}); 
 
} 
 

 
console.log(largestSum);

Смежные вопросы