Tengo dos listas desplegables dependientes, la primera lista obtiene los servicios de array1 y la segunda filtra una lista de array2 según los resultados de la lista 1.
Esto funciona como debería en este violín: jsfiddle
El problema es que el segundo valor tiene valores que están separados por una coma. Necesito separarlos y luego compararlos con todos los demás valores en el valor 2 y solo mostrar una instancia.
es decir
"Banner (Premium)", "Banner (Premium), Banner (440gsm)", "Banner (550gsm)"
Sería
"Banner (Premium)", "Banner (440gsm)", "Banner (550gsm)"
Aquí está mi código:
function menu2() { var serviceValue = document.getElementById("service-type").value; var el = document.getElementById("media-type"); var newArray = media.filter(function(r) {return r[1].includes(serviceValue)}) var currentlyAdded = []; el.innerHTML = ""; newArray.forEach(function(r) { if(currentlyAdded.indexOf(r[1]) === -1) { var option = document.createElement('option'); option.text = r[1]; el.appendChild(option); currentlyAdded.push(r[1]); } }) }Creo que necesito usar .split y .concat pero no sé cómo agregarlo a mi script.
Una solución con split
const str = '"Banner (Premium)", "Banner (Premium), Banner (440gsm)", "Banner (550gsm)"' // desired "Banner (Premium)", "Banner (440gsm)", "Banner (550gsm)" const desired = str.split('"').filter(x => /[AZ][az]/.test(x)).map( x => { const splitted = x.split(','); return (splitted.length < 2)?splitted[0]:splitted[1]; }); console.log(desired) Creo que buscando csv encontrarías soluciones puras de expresiones regulares