Estoy haciendo esta guerra de códigos . Quiero devolver la propiedad del objeto. ¿Es posible hacerlo cuando sepa el valor del objeto?
function findOdd(A) { let counter = {}; let finalResult; const NumInt = A.sort((a, b)=> a - b) NumInt.forEach((e)=>{counter[e] = (counter[e] || 0) +1}) console.log(counter) const values = Object.values(counter).filter((value)=>{ return value % 2 !== 0 }) Object.values(counter).filter((value)=>{ if(value % 2 !== 0){ return console.log(value) } }) } findOdd([1,1,2,-2,5,2,4,4,-1,-2,5])El uso del método Object.values() devuelve una matriz de valores de propiedad enumerables propios de un objeto dado, por lo que no es lo que desea en su caso.
Puede iterar a través de la instrucción for...in que itera sobre todas las propiedades enumerables de un objeto que están codificados por cadenas para lograrlo.
function findOdd(A) { let counter = {}; let finalResult; const NumInt = A.sort((a, b)=> a - b) NumInt.forEach((e)=>{counter[e] = (counter[e] || 0) +1}) console.log(counter) const values = Object.values(counter).filter((value)=>{ return value % 2 !== 0 }) for (const el in counter){ if(counter[el] % 2 !== 0){ return console.log(el, counter[el]); //logs property name and it's value } } } findOdd([1,1,2,-2,5,2,4,4,-1,-2,5])Puede crear un objeto que almacene la clave, las parejas de ocurrencias y luego filtrar la única clave con una ocurrencia impar con reduce y Object#keys :
function findOdd(arr) { const occurrences = arr.reduce(function(acc, curr) { acc[curr] = acc[curr] ? acc[curr] + 1 : 1; return acc; }, {}); const result = Object.keys(occurrences).find(key => (occurrences[key] % 2) === 1); return Number(result); } console.log(findOdd([7]) === 7); console.log(findOdd([0]) === 0); console.log(findOdd([1, 1, 2]) === 2); console.log(findOdd([0, 1, 0, 1, 0]) === 0); console.log(findOdd([1, 2, 2, 3, 3, 3, 4, 3, 3, 3, 2, 2, 1]) === 4);No puede hacer un bucle en un objeto usando funciones integradas de matriz como map, forEach, for...of
Estoy publicando una solución aquí.
const data = { 2: 0, 1: 2, 3: 1, 4: 7, 5: 9 } for (const key in data) { if (data[key] % 2 === 1) console.log(key, data[key]) } Otras formas posibles son usar Object.keys() y Object.values()
O Object.entries()