Un problema particular pedía devolver el primer valor único (es decir, un valor que aparece solo una vez en una matriz). Mi enfoque fue crear un obj con claves como elementos en la matriz y los valores como un contador de cuántas veces se vio cada valor.
function solution(arr) { let uniqueObj = {} for (let i=0; i<arr.length; i++){ if(uniqueObj[arr[i]] !== undefined){ uniqueObj[arr[i]] = uniqueObj[arr[i]] + 1 } uniqueObj[arr[i]] = 1 } console.log(uniqueObj) } solution([4,10,5,4,2,10]) //output { '2': 1, '4': 1, '5': 1, '10': 1 }¿Por qué el valor no se incrementa cada vez que se ve la misma clave?
Después de su declaración if, está restableciendo uniqueObj[arr[i]] de nuevo a 1. Necesita agregar una cláusula else para cuando uniqueObj no tiene el valor en arr[i] :
if (uniqueObj[arr[i]] !== undefined) { uniqueObj[arr[i]] += 1; } else { // add else block uniqueObj[arr[i]] = 1 }