8
votes

Comment supprimer les valeurs de tableau vides ("") d'un tableau?

J'ai un tableau à deux dimensions, généré à partir d'une table html avec jQuery, mais certaines valeurs sont vides et "" s'affiche.

Comment puis-je supprimer les valeurs vides?

for( var i = 0; i < columns[0].length; i++){ 
   if ( columns[0][i] === "") {
    columns[0].splice(i, 1); 
   }
}

J'ai déjà essayé le code suivant:

  <table>    
    <tr>
      <th>1A</th>
      <th>1B</th>
      <th>1C</th>
    </tr>
    <tr>
      <td>2A</td>
      <td>2B</td>
      <td>2C</td>
    </tr>
    <tr>
      <td></td>
      <td>3B</td>
      <td>3C</td>
    </tr>
    <tr>
      <td></td>
      <td></td>
      <td>4C</td>
    </tr>
  </table>
<script>
    var columns = $('tr').first().children().map(function(i) {
        return [
            $('tr').map(function(){
                return $(this).children().eq(i).text()
            }).get()
        ]
    }).get();
<script>

Cela a fonctionné pour certaines valeurs vides, mais toutes n'ont pas été supprimées pour une raison quelconque.

Sortie: https://imgur.com/e7BAdQK


4 commentaires

Un code de démonstration serait bien. Utilisez jsfiddle ou quelque chose s'il vous plaît. Comme les blancs peuvent provenir de plusieurs choses différentes.


juste après la boucle for, ajoutez columns = columns.filter(a => a!="")


Double possible de Supprimer les éléments vides d'un tableau en Javascript


Double possible de Supprimer les chaînes vides du tableau tout en conservant un enregistrement Sans boucle?


6 Réponses :


36
votes

Vous pouvez utiliser le filtre comme:

let arr = ['One', 'Two', '', 'Four', '', ''];
arr = arr.filter(item => item);
console.log(arr);

// Result
// ['One', 'Two', 'Four']

Exemple:

arr = arr.filter(item => item);

Parce qu'une chaîne vide a la valeur booléenne false . Il fonctionne avec toutes les valeurs false telles que 0 , false , null , undefined , '' , etc.

DEMO

Si vous voulez conserver certaines valeurs comme le nombre 0 (zéro), vous pouvez utiliser item !== undefined . Cela ne filtre que les valeurs non définies. N'oubliez pas de couper votre chaîne ou de vérifier avec regex pour garantir des chaînes vides sans espaces.


0 commentaires

3
votes

après avoir créé le tableau de colonnes,

filtrer les valeurs vides comme ça

columns = columns.filter((v) => v != '')


0 commentaires

4
votes

Essayez de filtrer avec la fonction Boolean :

columns.filter(Boolean)

Cela filtrera toutes les fausses valeurs


0 commentaires

3
votes

C'est parce que lorsque vous columns[0].splice(i, 1); vous modifiez le même tableau sur lequel vous itérez, vous pouvez donc utiliser un filtre de tableau comme

columns[0] = columns[0].filter((val) => val != "");

au lieu de la boucle for


0 commentaires

2
votes

Utilisez simplement la fonction de filtre : -

columns = columns.filter(col => col);

Cela supprimera les valeurs vides.


0 commentaires

2
votes

Si certaines valeurs peuvent être égales à 0 , filtrez en comparant "" (car 0 vaut également false , les vérifications booléennes échoueront pour 0 ):

columns[0].filter(col => col != "");


0 commentaires