De alguna manera quería crear mi propio método set() como mySet() para un elemento único de una matriz. Pero obtener una salida incorrecta. ayúdame.
let arr = [1,2,3,4,5,2,8,1,3,1] function mySet(arr){ let mapObj = {} let newArr = [] for (let i = 0; i <arr.length; i++) { if(mapObj[arr[i]]){ //skip }else{ mapObj[arr[i]]=i newArr.push(arr[i]) } } return newArr; } console.log(mySet(arr)) //i wanted [1,2,3,4,5,8] getting [1,2,3,4,5,8,1]Necesita un valor de verdad para el objeto en este caso, puede usar true .
El cheque devuelve con cero (el primer índice) el mismo resultado que si no hubiera asignado ningún valor a la propiedad.
function mySet(arr) { let mapObj = {} let newArr = [] for (let i = 0; i < arr.length; i++) { if (!mapObj[arr[i]]) { mapObj[arr[i]] = true; newArr.push(arr[i]) } } return newArr; } let arr = [1, 2, 3, 4, 5, 2, 8, 1, 3, 1] console.log(mySet(arr));mapObj[arr[i]]=i asigna el índice actual.
if(mapObj[arr[i]]){ trata el valor como un valor booleano.
El primer índice del valor 1 ocurre en 0 .
Entonces dices mapObj[1] = 0 , que es falso .
Debe asignar true en lugar de i .