2016-08-04 3 views
0

Я работаю над упражнением как очень начинающий, учущийся (пока) программист. Я получил этот массив номеров кредитных карт:Как разбить массив строк на двумерный массив одиночных целых чисел

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]]; 

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

Я был бы признателен за руководство! Спасибо!

+0

Используйте сокращение, чтобы суммировать массивы в одно целое и использовать Math.max для поиска наибольшего. – Sukima

+0

Можете ли вы показать, как использовать сокращение? – dlucero

ответ

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 }) })) 

Дополнительное упражнение для вас: какой номер карты был?

+0

Благодарим вас за то, что вы поменяли это шаг за шагом индивидуальными объяснениями - это очень полезно! Я вернусь к вам с ответом на ваш вопрос, как только я уверен, что понимаю, как это работает :) – dlucero

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); 
+0

Спасибо! Я ценю вашу помощь! – dlucero

+0

@dlucero: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – Sukima