No puedo descifrar esto, escribí un código desordenado y ahora no sé cómo solucionarlo o qué hacer a continuación.
En este kata, su trabajo es devolver los dos valores más altos distintos en una lista. Si hay menos de 2 valores únicos, devuelva tantos como sea posible. El resultado también debe ordenarse de mayor a menor.
Ejemplo
[4, 10, 10, 9] => [10, 9] [1, 1, 1] => [1] [] => []Fuente https://www.codewars.com/kata/57ab3c09bb994429df000a4a/train/javascript
Este es mi código incorrecto
function twoHighest (arr) { let max1 = Math.max(...arr); var i = 0; while (i < arr.length) { if (arr[i] === max1) { arr.splice(i, 1); } else { ++i; } } var array2 = arr; var maxone = [max1]; let max2 = [Math.max(...array2)]; return maxone.concat(max2); };Paso 1: matriz única por Array.filter
Paso 2: Ordenar por DESC por Array.sort
Paso 3: obtenga los primeros 2 elementos de la matriz ordenada por Array.slice
function twoHighest(arr) { return arr .filter((v, i, a) => a.indexOf(v) === i) // Unique array .sort((a, b) => b - a) // Sort by DESC .slice(0, 2); // Get first 2 element of sorted array }; const demoArray = [15, 20, 20, 17]; const result = twoHighest(demoArray); console.log(result);