Estoy tratando de resolver algunos ejercicios del rango de piratas informáticos, y estoy luchando con el map de matriz y los métodos de filter .
Esta función supone buscar un valor de la matriz de queries en la matriz de strings y cuando uso el método de mapa devuelve una matriz con valores undefined , y cuando uso el método de filtro devuelve una matriz vacía.
var strings = ['ab','ab','bca','acb'] var queries = ['ab','abc','bc'] function matchingStrings(strings, queries) { let retArr = [] for(let n = 0; n<queries.length; n++){ var equalelem = strings.filter(function(queries){queries[n] === [...strings]}) retArr.push(equalelem.length); } return equalelem } console.log(matchingStrings(strings, queries))Mirando solo su sintaxis, y sin analizar el algoritmo, las siguientes cosas deberían cambiar:
Su función de filtro siempre devuelve undefined . Cualquier función que no tenga una declaración de return explícita devuelve undefined . ¿Tal vez quería usar una expresión de función de flecha, que no requiere una declaración de retorno si omite las llaves?
var equalelem = strings.filter((queries) => queries[n] === [...strings]) Dentro de la función de filtro, parece que está comparando un elemento de queries de lista con una copia de strings de lista. Comparar un elemento de una lista (en este caso, una sola cadena) con una lista nunca será cierto en su caso.
La variable letArr no parece tener ningún propósito.