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
6 Réponses :
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.
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.
après avoir créé le tableau de colonnes,
filtrer les valeurs vides comme ça
columns = columns.filter((v) => v != '')
Essayez de filtrer avec la fonction Boolean
:
columns.filter(Boolean)
Cela filtrera toutes les fausses valeurs
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
Utilisez simplement la fonction de filtre : -
columns = columns.filter(col => col);
Cela supprimera les valeurs vides.
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 != "");
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?