Estoy agregando elementos a una matriz como esta ...
myarray = []; myarray.push($('#name1').text()); myarray.push($('#name2').text()); myarray.push($('#name3').text()); myarray.push($('#name4').text());Esto funciona correctamente, pero estoy tratando de enviar solo a la matriz si el elemento existe y tiene contenido.
Sé que puedo revisar la matriz después y eliminar los valores vacíos, pero ¿hay alguna manera de hacerlo primero para ahorrarme ese paso adicional?
Si se trata de la longitud de los códigos, hay formas más cortas de escribir esto.
const myarray = ['#name1','#name2','#name3','#name4'] .map(n => $(n).text()).filter(t=>t);Si tiene algún otro indicador además del código mencionado, puede usarlo para verificar dinámicamente el nombre del elemento; de lo contrario, puede usar simple if else para verificar si existe.
myarray = []; // example iteration of 4 id id = 4; for (let i = 1; i <= id; i++) { if ($(`#name${i}`).text()) { myarray.push($(`#name${i}`).text()) console.log('exist') } else { console.log('not exist') } } console.log(myarray) <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="name1"></div> <div id="name2">hey</div> <div id="name3">no</div> <div id="name4"></div>Usa la función each().
myarray = []; $("span").each(function(){ if ($(this).text().trim().length > 0) { myarray.push($(this).text()); } }); console.log(myarray);ejemplo html:
<span id="name1">Hello</span> <span id="name2"></span> <!-- span#name3 skipped --> <span id="name4">World</span>