Я заинтересован в поиске номера кредитной карты, цифры которой составляют наибольшее количество. Если более одной цифры имеют одну и ту же самую большую сумму цифр, я хочу, чтобы последняя была в списке с этой суммой.Поиск максимальной суммы в массиве номеров кредитных карт
Я пытаюсь написать одну функцию, которая принимает один аргумент. Этот аргумент будет массивом номеров кредитных карт. Предположим, что в массиве может быть любое количество номеров кредитных карт, и каждый из них представляет собой строку цифр и тире. Функция должна вернуть номер кредитной карты с наибольшей суммой цифр.
Вот что я так далеко
var creditCardNumbers = ['5865-2600-5889-0555', '4779-598666-3666', '4252-278553-7978' ,'4556-4242-9283-2260'];
var sums = creditCardNumbers.map(function(f) {
return f.match(/\d/g).reduce(function(sum, num) {
return sum + parseInt(num);
}, 1);
});
var maxSum = Math.max.apply(Math, sums);
console.log("totalSums = " + (sums));
console.log("maxSum = " + maxSum);
console.log("Number with the highest sum: " + (sums.creditCardNumbers));
//This last console.log does not work
У меня возникают проблемы, возвращая соответствующий номер кредитной карты с самой высокой суммой. Если у кого-то есть советы о том, как достичь этой проблемы, их собственный путь - это здорово. Заранее спасибо!
Возможно, что-то вроде 'creditCardNumbers.reduce (..., {cc: undefined, max: 0}). Cc'? – jlowcs
(Я позволил вам выяснить остальное;)) – jlowcs
Надеюсь, это всего лишь тест и не указывает на какой-либо фактический производственный код, который вы используете. – Andy