Este es un código para el primer elemento recurrente y digamos que como entrada [2,5,5,2,3,5,1,2,4] devuelve 5 porque los pares están antes de 2,2 y no puedo devolver 5
function firstRecurring(input) { for (let i = 0; i < input.length; i++) { for (let j = i + 1; j < input.length; j++) { if(input[i] === input[j]) { return input[i]; } } } return undefined } console.log(firstRecurring([2,5,5,2,3,5,1,2,4]));Su índice j se ejecuta inmediatamente hasta el final de la matriz. En su lugar, debe poner un límite a lo lejos que mira y verificar la sección anterior. Entonces j no debería estar mirando hacia adelante , sino hacia atrás :
function firstRecurring(input) { for (let i = 1; i < input.length; i++) { for (let j = 0; j < i; j++) { if(input[i] === input[j]) { return input[i]; } } } return undefined; } console.log(firstRecurring([2,5,5,2,3,5,1,2,4])); Por supuesto, esto se puede hacer más eficiente usando un conjunto de valores encontrados. A continuación, también puede utilizar la sintaxis for..of . Y... return undefined realmente no es necesario, ya que es el comportamiento predeterminado:
function firstRecurring(input) { let set = new Set; for (let val of input) { if (set.has(val)) return val; set.add(val); } } console.log(firstRecurring([2,5,5,2,3,5,1,2,4]));