Javascript удаляет элементы из массива
Javascript
this.crossCountries = this.api.getCrossCountries();
this.crossCountries.forEach(item => {
this.crossCountriesData.push(item);
for (var i = 0; i < this.crossCountriesData.length; i++) {
if (this.crossCountriesData[i].response === 0) {
this.crossCountriesData[i].response.shift();
}
this.crossCountriesData[i].response.splice(1, 3);
console.log('array: ', this.crossCountriesData[i].response);
}
});
До сдвига и склейки в массиве было 227 элементов, а теперь - 224. Сдвиг и склейка выполняются, но не на тех элементах.
Мне нужно удалить элементы 0, 2, 3 и 4 массива.
Что я делаю неправильно?
2 ответа
Даст ли это ожидаемый результат
this.crossCountries = this.api.getCrossCountries();
this.crossCountries.forEach(item => {
item.response.shift();
item.response.splice(1, 3);
});
console.log(this.crossCountries);
Я создал образец массива со значениями, которые я вижу из вашего вопроса. Если вы запустите приведенный ниже код, вы увидите, что индексы 0,2,3,4 удалены из исходного массива.
Проверьте мое решение. Я добавил комментарии для лучшего понимания.
let arr = [
{
continent:"All",
population:10000
},
{
continent:"North-America",
population:20000
},
{
continent:"Europe",
population:30000
},
{
continent:"Asia",
population:40000
},
{
continent:"South America",
population:50000
},
{
continent:"Asia",
population:40000
},
{
continent:"South America",
population:50000
},
{
continent:"Africa",
population:60000
},
{
continent:"Europe",
population:30000
},
{
continent:"South America",
population:50000
},
{
continent:"South America",
population:50000
},
]
//put here the indexes that you want to remove
var indxRemov = [0,2,3,4];
var len = indxRemov.length;
Object.values(arr).forEach( (val,indx) => {
//get length of indexes array in order to stop when we have removed all the indexes from the original array
if( len > indx){
//console.log("index: "+indx+" Length: "+indxRemov.length);
//console.log("Remove index: "+indxRemov[0]);
//console.log(indxRemov);
//each time that removes a sub array from the array the length of the original array decreases
arr.splice(indxRemov[0],1);
//remove from index array the removed index
indxRemov = indxRemov.filter(item => item !== indxRemov[0]);
//decrease the values of indexes because the original array decreases as well.
indxRemov = indxRemov.map(x => x-1);
}
});
console.log(arr);