Pregunta ¿Es posible hacer coincidir una palabra que contiene el mismo carácter en diferentes posiciones de la matriz de cadenas?
por ejemplo: - supongamos que tengo la siguiente matriz
arr1=["apply","application","apple","alphabet","killo","pipe"]Ahora quiero la siguiente salida del elemento que tiene doble 'p' (pueden estar juntos o en una posición diferente)
Salida deseable :
arr1=["apply","application","apple","pipe"] si pongo 'l' entonces debería obtener salida arr1=[killo] salida
arr1=["apply","application","apple","alphabet","killo","pipe"] ans= arr1.filter(x => x.includes('p')) console.log(ans)pero estoy obteniendo la siguiente salida
arr1=["apply","application","apple","alphabet","pipe"]Puede utilizar el siguiente formato de expresión regular:
var arr1 = ["apply", "application", "apple", "alphabet", "killo", "pipe"]; function filter_dup(arr, c) { return arr.filter(x => x.match(new RegExp(`.*${c}.*${c}.*`))); } console.log(filter_dup(arr1, 'p')); console.log(filter_dup(arr1, 'l')); También puede usar String.prototype.indexOf y String.prototype.lastIndexOf (si el primer y el último índice de un carácter son diferentes de que hay al menos dos ocurrencias de ese carácter):
var arr1 = ["apply", "application", "apple", "alphabet", "killo", "pipe"]; function filter_dup(arr, c) { return arr.filter(x => x.indexOf(c) != x.lastIndexOf(c)); } console.log(filter_dup(arr1, 'p')); console.log(filter_dup(arr1, 'l'));