Hay muchas preguntas sobre esto, pero ninguna de ellas resolvió mi problema.
tengo este objeto:
const default_keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 };entonces, entre todos estos elementos clave: valor, quiero saber qué clave tiene el valor = 100 (en este caso debería devolver "w");
¿Es posible?
EDITAR: probé esta solución, pero no funcionó porque solo funciona con nombres de clave fijos:
const object1 = { a: {val: "aa"}, b: {val: "bb"}, c: {val: "cc"} }; let a = Object.values(object1).find((obj) => { return obj.val == "bb" });en este caso el nombre fijo es "val", pero en mi caso no hay nombre fijo..
Una forma sería iterar a través de Object.entries .
const default_keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 }; function getKey(object, value){ for (const [k, v] of Object.entries(object)) { if(v == value) return k; } } console.log(getKey(default_keys, 100)); Otra forma sería usar find .
const default_keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 }; function getKey(object, value) { let entry = Object.entries(object).find(item => item[1] == value); if (entry) return entry[0]; } console.log(getKey(default_keys, 100));Usando for...in :
const getKeyWithValue = (obj = {}, value) => { let key; for(const prop in default_keys) { if(default_keys[prop] === value) { key = prop; break; } } return key; } const default_keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 }; console.log( getKeyWithValue(default_keys, 100) );Puede tomar un objeto con pares clave/valor cambiados y obtener la clave tomando el valor como clave.
const keys = { l: 1, t: 5, o: 10, r: 50, w: 100, y: 500, m: 1000, f: 5000, a: 10000, z: 50000, d: 100000, q: 1000000 }, values = Object.fromEntries(Object.entries(keys).map(([k, v]) => [v, k])); console.log(values[100]);