Supongamos que tengo una matriz como
let arr1 = [0,2] This is always sortedNota: estos elementos en la matriz representan índices que se eliminarán de otra matriz.
Tengo otra matriz como:
let arrOvj = [1,4,6,7,21,17,12]Quiero eliminar el elemento de arrObj, según los índices presentes en arr1.
Entonces, después de la eliminación, el OP esperado debería ser,
[4,7,21,17,12].Entonces, ¿cómo puedo lograr esto?
Intenté como:
for(let i=0;i<arr1.length;i++){ arrObj.splice(arr1[i],1) }Pero esto está dando un resultado incorrecto.
Ejemplo: Si arr1=[0]
Elimina los primeros dos elementos en lugar de eliminar el elemento en el índice 0 de arrObj.
¿Qué otra alternativa puedo seguir para que se elimine solo del valor de índice proporcionado?
Por favor, hágamelo saber si alguien necesita más información.
Puede recorrer hacia atrás los índices para eliminarlos, de modo que los elementos nunca se desplacen a una ubicación que aún no se haya procesado.
let arr1 = [0,2] let arrOvj = [1,4,6,7,21,17,12] for(let i = arr1.length - 1; i >= 0; i--) arrOvj.splice(arr1[i], 1); console.log(arrOvj);Otra forma de hacerlo es usar el método de filtro en la matriz y eliminar los índices correspondientes de la siguiente manera:
let arrObj = [1,4,6,7,21,17,12] let indexes = [0,2] let newArr = arrObj.filter((ele, index) => !indexes.includes(index)); console.log(newArr);