La función tiene 1 parámetro: una matriz. Debería iterar a través de la matriz y devolver cadenas que contengan un número en ellas. Si ninguno de ellos tiene un número, devolverá una matriz vacía.
El código que he escrito hasta ahora parece demasiado detallado. A veces no devuelve el valor correcto. Estoy buscando formas de acortar el código o mejorarlo.
function numInStr(arr) { var stringsWithNum = []; for(var x = 0; x < arr.length - 1; x++) { for (var y = 0; y < arr[x].length - 1;y++) { //console.log(typeof arr[x][y]); if('0123456789'.indexOf(arr[x][y]) !== -1) { stringsWithNum.push(arr[x]); break; } } } return stringsWithNum; }
Puede acortar su código considerablemente usando .filter()
para filtrar los elementos que contienen números y usando .match()
para probar si los elementos contienen un número.
Esto elimina la necesidad de crear y mantener (y posiblemente configurar incorrectamente) índices de matrices.
function numInStr(arr) { return arr.filter(function (elmt) { return elmt.match(/\d/) }) } console.log(numInStr(['foo', 'ab12', '34asdf', 'bar'])) // Array [ "ab12", "34asdf" ]