Tengo una lista HTML. Quiero recorrer cada li y almacenar el texto en una matriz. Mi matriz final debería ser la siguiente:
[{ text: ["country", "city", "poste code", "address", "name", "surname", "email", "tel number"], textwithBrackets: ["[country]", "[city]", "[poste code]", "[address]", "[name]", "[surname]", "[email]", "[tel number]"] }]Lo que hice fue:
1- recorrer cada li usando el map y devolver el texto a una array 1
2- haz el mismo paso que el primero pero devolviendo cada texto entre paréntesis a un array 2
3- cree una array final y presione tanto la array 1 como la array 2 por clave / valor
A continuación se muestra mi código. Está funcionando, pero ¿hay alguna solución mejor usando jQuery que no conozca? ¿Cómo puedo hacer ambos mapas en un solo paso, por ejemplo, y asignar la combinación en la matriz final directamente?
Muchas gracias por sus sugerencias.
var liText = $('ul > li').map(function(){ return $(this).text(); }).get(); var liTextwithBrackets = $('ul > li').map(function(){ return '[' + $(this).text() + ']'; }).get(); var result = []; result.push({ text: liText, textwithBrackets: liTextwithBrackets }); console.log(result); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li>country</li> <li>city</li> <li>poste code</li> <li>address</li> <li>name</li> <li>surname</li> <li>email</li> <li>tel number</li> </ul>Por favor, intente esto. Es un poco más eficaz que su enfoque.
var liText = $('ul > li').map(function() {return $(this).text();}).get(); var result = [{ text: liText, textwithBrackets: liText.map(val => '[' + val + ']') }]; <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul> <li>country</li> <li>city</li> <li>poste code</li> <li>address</li> <li>name</li> <li>surname</li> <li>email</li> <li>tel number</li> </ul>