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);

Другие вопросы по тегам