2017-01-01 53 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);