Digamos que tengo algo de Javascript con lo siguiente:
Foo = { alpha: { Name: "Alpha", Description: "Ipso Lorem" }, bravo: { Name: "Bravo", Description: "Nanu, Nanu" }, delta: { Name: "Fly with me", Description: "Klaatu barata nikto" } }; Table = [ Foo.alpha, Foo.bravo, Foo.delta]; x = Table[1]; ¿Hay alguna forma de mirar x y obtener el identificador bravo ? Soy plenamente consciente de que puedo usar x.Name o x.Description , pero digamos que necesito saber el nombre de algo en otro lugar. En una tarea con la que experimenté, me vi obligado a agregar una id : "bravo" a cada entrada, pero eso fue un fastidio.
Mi instinto me dice que no se puede hacer. Pero espero que alguien más pueda decirme lo contrario.
Foo = { alpha: { Name: "Alpha", Description: "Ipso Lorem" }, bravo: { Name: "Bravo", Description: "Nanu, Nanu" }, delta: { Name: "Fly with me", Description: "Klaatu barata nikto" } }; Table = [ ]; for(let val in Foo){ let obj = Foo[val]; obj = {...obj , id:val } Table.push(obj) } x = Table[1]; console.log(x)Personalmente, usaría un Proxy ...
const _Foo = { alpha: { Name: "Alpha", Description: "Ipso Lorem" }, bravo: { Name: "Bravo", Description: "Nanu, Nanu" }, delta: { Name: "Fly with me", Description: "Klaatu barata nikto" } }; const Foo = new Proxy(_Foo, { get(target, id) { if (target.hasOwnProperty(id)) { return {...target[id], id}; } return target[id]; } }); const Table = [ Foo.alpha, Foo.bravo, Foo.delta ]; console.log(Table[0])