Tengo una matriz como se muestra a continuación, que contiene 6 números. Estoy tratando de crear una función que elimine un valor si es una ocurrencia par/impar. Por ejemplo, si escribo la función deleteData(myArr,"even") , eliminará los números de datos 0, 2 y 4. Y al revés si es "raro". Pero cuando intenté ejecutar mi código, no funcionó como yo quería. ¿Puede alguien decirme por qué?
const myArr=[90,34,28,19,26,22]; function deleteData (array,occuranceType){ switch (occuranceType){ case "odd": for (let i=0;i<array.length;i++){ if (i%2!==0){ array.splice(i,1); }; }; break; case "even": for (let i=0;i<array.length;i++){ if (i%2==0){ array.splice(i,1); }; }; break; }; }; deleteData(arr,"odd") console.log(arr) Este es el resultado en la consola: [ 90, 28, 19, 22 ]
Puede usar el filtro para esto, ya que es más fácil y no muta la matriz original.
let myArr = [90, 34, 28, 19, 26, 22]; function deleteData(array, removeEven) { return array.filter((v, i) => removeEven ? (i % 2 !== 0) : (i % 2 === 0)); }; myArr = deleteData(myArr, true) console.log(myArr)Puede filter la matriz según el argumento pos pasado a la función.
const deleteData = (array, pos) => array.filter((_, i) => i % 2 === Number(pos !== "even")); console.log(deleteData([90, 34, 28, 19, 26, 22], "odd")); console.log(deleteData([90, 34, 28, 19, 26, 22], "even")); Nota: Number(false) devuelve 0 y Number(true) devuelve 1 .