Soy nuevo en JS y trato de obtener valores de una matriz de objetos.
var jsonData = [{ "role": "abc", "nextrole": "def", "goals": { "goal1": "goal 1", "goal2": "goal 2", "goal3": "goal `${a}`" } }, { "role": "def", "nextrole": "ghi", "goals": { "goal1": "goal 4", "goal2": "goal 5", "goal3": "goal `${a}`" } }, { "role": "ghi", "nextrole": "jkl", "goals": { "goal1": "goal 7", "goal2": "goal 8", "goal3": "goal `${a}`" } }]; var result2 = jsonData.find(obj => { return obj.role === "def" }); var a = "any String"; Object.keys(result2.goals).forEach(function(key) { $('ul').append(`<li>${result2.goals[key]}</li>`); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <h2></h2> <ul></ul>Como puede ver en el ejemplo dado, puedo obtener el objeto en función del rol definido. pero como insertar un valor dinámico o cualquier otro valor variable dentro del objetivo 3, ${a}; si esta no es la forma correcta de hacerlo, por favor sugiérame una mejor. No soy capaz de encontrar una manera de hacerlo. cualquier ayuda sería apricated.
Gracias
Puede tener los valores como funciones que pueden aceptar un parámetro y devolver una cadena:
const jsonData = [ { "role": "abc", "nextrole": "def", "goals": { "goal1": () => "goal 1", "goal2": () => "goal 2", "goal3": (a) => `goal ${a}` } }, { "role": "def", "nextrole": "ghi", "goals": { "goal1": () => "goal 4", "goal2": () => "goal 5", "goal3": (a) => `goal ${a}` } }, { "role": "ghi", "nextrole": "jkl", "goals": { "goal1": () => "goal 7", "goal2": () => "goal 8", "goal3": (a) => `goal ${a}` } } ]; const result2 = jsonData.find(({ role }) => role === "def"); const a = "any String"; Object.keys(result2.goals).forEach(key => { $('ul').append(`<li>${result2.goals[key](a)}</li>`); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <h2></h2> <ul></ul>