Si tengo una matriz compuesta de cadenas de dígitos y guiones, ¿cómo puedo usar Javascript para agregar la suma de cada dígito mientras omito los guiones?

  1. Atraviese cada elemento de la matriz [‘4916-2600-1804-0530’, ‘4779-252888-3972’, ‘4252-278893-7978’, ‘4556-4242-9283-2260’], divida cada elemento por – a obtener una matriz de los números. Por ejemplo, arr [0] .split (“-”) devolvería una matriz [4916,2600,1804,0530]
  2. Ahora recorra cada elemento de la matriz obtenida después de dividir y divídalo nuevamente a nivel de personaje. Como un [0] .split (“”) devolvería una matriz [4,9,1,6]. Luego itera y suma cada elemento de esta matriz. Haga esto para todos los elementos de la matriz [4916,2600,1804,0530]
  3. Repita los dos pasos hasta que termine de recorrer la matriz original [‘4916-2600-1804-0530’, ‘4779-252888-3972’, ‘4252-278893-7978’, ‘4556-4242-9283-2260’]

Para la segunda parte del paso 2, puede usar el siguiente fragmento de código para reducir las iteraciones y simplificar el código

var a = [4,9,1,6]
var sum = a.reduce (function (a, b) {return a + b;}, 0)

No le proporciono el código exacto intencionalmente, convertir este pseudocódigo en solución de trabajo lo ayudaría a idear soluciones en el futuro.

Puede aprovechar el hecho de que las cadenas en JavaScript tienen forma de matriz para extraer los dígitos individuales y que unary + convertirá cadenas / caracteres en números de la manera esperada.

Considerando una cadena a la vez, primero queremos convertirla en una matriz que contenga solo los dígitos válidos. Si sabemos que el único carácter sin dígitos del que debemos preocuparnos es “-“, esto es bastante trivial:

[] .filter.call (str, función (c) {return c! == ‘-‘;})

Luego, queremos resumir la matriz resultante de dígitos:

.reduce (function (a, n) {return a + (+ n);}, 0)

Luego solo necesitamos un contenedor para extraer cada cadena individual de la matriz original de cadenas:

[‘4916-2600-1804-0530’, ‘4779-252888-3972’, ‘4252-278893-7978’, ‘4556-4242-9283-2260’]. Map (function (str) {
return [] .filter.call (str, función (c) {return c! == ‘-‘;})
.reduce (function (a, n) {return a + (+ n);}, 0);
});

Para un poco más de seguridad, puede reemplazar el (+n) con parseInt(n,10) .

Aquí hay una solución completa

arr = …;
var newArr = app.map (function (group) {
return group.split (“-“). join (“”). reduce (function (prev, curr) {
volver prev + (+ curr);
}, 0);
});

More Interesting

¿Puede alguien ayudarme a preparar un plan para preparar estructuras de datos y algoritmos en un mes de tiempo desde el punto de vista de las entrevistas?

¿Por qué todos me dicen que aprenda la estructura de datos y los algoritmos si quiero obtener un trabajo de desarrollo de software?

Cómo entender la precisión Top-N en el aprendizaje automático de una manera simple

¿Cuáles son algunas optimizaciones comunes que los clientes de GPS como Google Maps usan además de los algoritmos elementales de ruta más corta como la búsqueda A *?

¿Cuáles son algunos ejemplos de árboles M aplicados a problemas del mundo real?

¿Qué área de finanzas NO se externalizará a computadoras y algoritmos en el futuro?

¿Cuál es la última actualización en el algoritmo SEO de Google en 2017 para un rango de sitio web?

¿Cuál es la diferencia entre las estructuras de datos de std :: vector y std :: deque?

¿Qué significa si un futuro programador apesta u odia los algoritmos de aprendizaje y las estructuras de datos?

Cómo utilizar el algoritmo Hidden Markov Model Viterbi para el etiquetado de secuencias

¿Qué tan bueno es quicksort y cadenas?

¿Cómo funciona Swype?

¿Cuál es la mejor manera de enseñarme a resolver problemas con algoritmos en Java Script? Ese es mi problema número uno hasta ahora. Soy un principiante, obviamente.

Dada una biblioteca que proporciona una coincidencia aproximada de cadenas, ¿cuáles son algunos procedimientos adicionales que pueden explicar una mejor coincidencia de cadenas?

¿Cuántos números debajo de [matemática] 10 ^ n [/ matemática] hay cuyos dígitos suman [matemática] [/ matemática]?