Tengo una matriz input y otra matriz indexes. Quiero eliminar el elemento de la matriz input cuyo índice se proporciona en la matriz indexes.

Lo he intentado usando array.splice en for loop pero a medida que se elimina item en cada iteración, se cambian los índices de otros elementos.

JavaScript :

var array = [10, 11, 12, 13, 14, 15];
var indexes = [0, 1, 2, 3, 4, 5];

indexes.forEach(function(item) {
  array.splice(item, 1);
});

console.log(array);
0
Rayon 10 dic. 2015 a las 13:46

3 respuestas

La mejor respuesta

Puede utilizar Array.prototype.filter y haga lo siguiente:

var array = [10, 11, 12, 13, 14, 15];
var indexes = [0, 1, 2, 3, 4, 5];

array = array.filter(function(x, i) {
  return indexes.indexOf(i) === -1;
});

console.log(array);
1
Yeldar Kurmangaliyev 10 dic. 2015 a las 10:51

Aquí está utilizando forEach loop que le da el elemento como primer argumento y el índice en el segundo, por lo que, según tengo entendido, lo que quiere hacer puede lograr con esto, intente con la esperanza de que esto resuelva su problema :)

indexes.forEach(function(item, index) {
  array.splice(index, 1);
});
1
Sachin 10 dic. 2015 a las 10:52

Ordene la matriz de índices de mayor a menor, luego spice solo cambiará el índice de los números que ya ha eliminado

0
HansP 10 dic. 2015 a las 10:50
34199882