Programación de algoritmos intermedios - Unión ordenada

No entiendo porque mi codigo falla, una persona que ayude porfa

function uniteUnique(arr) {

    arr=[...arguments]
    let  newArr=[  ];
    var count=0;

    for (let i in arr){
              newArr=newArr.concat(...arr[i])
    }


   newArr = newArr.filter( x => {
          count++
         return count == newArr.indexOf(x)

})

return newArr

}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

es lo mismo pero este si funciona ¿porque la solucion original falla?

function uniteUnique(arr) {

arr=[…arguments]
let newArr=;
let result = ;
for (let i in arr){
newArr=newArr.concat(…arr[i])
}

for (let i in newArr){
console.log(newArr.indexOf(newArr[i])+" — "+ i)
if(newArr.indexOf(newArr[i])== i){
result.push(newArr[i])
}
}
console.log(result)
return result
}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

Cuál es el link del reto?

Para pegar el código utiliza el botón </>
image

El problema en tu código está en con la variable count y la función filter.

Aunque inicializas “count” con el valor 0, en la función “filter” count comienza con el valor uno.
como se puede ver en la imagen
newArr.indexOf(x) si inicia con el valor cero
pero count inicia con el valor 1, ambos deberían iniciar con el mismo valor

image

Soy muy capaz de cometer eseos errores, pero llego un momento donde era ensayo y error, recuerdo haber movido “count”, nose habria que probar el codigo

En este caso solo habría que hacer que count realmente empieza desde 0 dentro de la función filter.

1 Like

:sweat_smile: si era eso , y pensar que estaba dudando en volver a usar filter :slightly_smiling_face:, gracias

1 Like