Soy nuevo y estoy aprendiendo programación. Me preguntaba si hay alguna manera de obtener un valor específico + clave o (en este caso) clave de un objeto si pasa una condición.
function miti (a){ let obj = {}; let num; for(let i =0; i < a.length; i++){ num = a[i] if(obj[num] === undefined){ obj[num]= 1 } else { obj[num] ++ } } //Now I have created an object that records the frequancy of each presented number. if(Object.values(obj) === 1){ return } } console.log(miti([1,2,1,3,4,3,4,5))Del código anterior, me gustaría extraer un número solitario sin pares, construí un objeto que registra cada frecuencia de una matriz determinada.
Por favor, sea un poco descriptivo ya que soy un novato.
Object.values(obj) === 1 no tiene ningún sentido porque Object.values devuelve una matriz, que definitivamente no será igual a un número.
Iterar a través de las entradas del objeto (los pares clave-valor) y devolver la primera entrada para la que el valor es 1.
function miti(a) { let obj = {}; let num; for (let i = 0; i < a.length; i++) { num = a[i] if (obj[num] === undefined) { obj[num] = 1 } else { obj[num]++ } } for (const entry of Object.entries(obj)) { if (entry[1] === 1) { return entry[0]; // or return entry, if you want the whole entry and not just the key } } } console.log(miti([1, 2, 1, 3, 4, 3, 4, 5])) O .find la entrada que coincida con la condición y devuélvala.
function miti(a) { let obj = {}; let num; for (let i = 0; i < a.length; i++) { num = a[i] if (obj[num] === undefined) { obj[num] = 1 } else { obj[num]++ } } return Object.entries(obj) .find(entry => entry[1] === 1) [0]; } console.log(miti([1, 2, 1, 3, 4, 3, 4, 5]))O, usando los métodos Array .forEach() y .find() en combinación con Object.keys() puedes hacerlo así:
function firstUniqueValue(a) { let obj = {}; a.forEach(k=>obj[k]=(obj[k]||0)+1); return Object.keys(obj).find(k=>obj[k]==1); } console.log(firstUniqueValue([1, 2, 1, 3, 4, 3, 4, 5]))