Tengo una gran variedad de cadenas:
['{{Wanted Value}}', 'true', '{{Wanted Value}}', '{{Wanted Value}} unwanted {{Wanted Value}}', 'false'...] Quiero filtrar la matriz y extraer cada subcadena {{Wanted Value}} a una nueva matriz. Si el elemento de la matriz contiene 2 o más de estas subcadenas, quiero tener cada una de ellas como un elemento separado. Así que el resultado de la matriz anterior sería:
['{{Wanted Value}}', {{Wanted Value}}', {{Wanted Value}}', {{Wanted Value}}']Escribí la expresión regular que quiero usar pero no estoy seguro de cómo escribir la función de filtro correctamente:
match(/\{\{(.+?)\}\}/)[0]Gracias
Puedes probar este enfoque
flatMap es recopilar todas las cadenas coincidentesfilter es para deshacerse de los resultados vacíos const data =['{{Wanted Value}}', 'true', '{{Wanted Value}}', '{{Wanted Value}} unwanted {{Wanted Value}}', 'false'] const result = data.flatMap(stringData => stringData.match(/\{\{(.+?)\}\}/g)).filter(stringData => stringData); console.log(result)Aquí hay un código que usa la función de reduce y match de cadenas para filtrar el resultado
let r = ['{{Wanted Value}}', 'true', '{{Wanted Value}}', '{{Wanted Value}}', 'unwanted','{{Wanted Value}}', 'false']; const result = r.reduce((accumulator, current) => { return current.match(/\{\{(.+?)\}\}/)? accumulator.concat(current): accumulator; }, []); console.log(result);