Wie entferne ich leere Array-Werte (“”) aus einem Array?

Lesezeit: 3 Minuten

Benutzeravatar von House97_
Haus97_

Ich habe ein zweidimensionales Array, das aus einer HTML-Tabelle mit jQuery generiert wurde, aber einige Werte sind leer "" wird angezeigt.

Wie kann ich die leeren Werte entfernen?

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

Ich habe bereits folgenden Code ausprobiert:

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

Es funktionierte für einige leere Werte, aber aus irgendeinem Grund wurden nicht alle entfernt.

Ausgabe: https://imgur.com/e7BAdQK

  • Etwas Democode wäre nett. Verwenden Sie bitte jsfiddle oder so etwas. Da die Leerzeichen von vielen verschiedenen Dingen kommen können.

    – Deckerz

    15. April 2019 um 8:20 Uhr

  • direkt nach der for-Schleife add columns = columns.filter(a => a!="")

    – alt255

    15. April 2019 um 8:20 Uhr


  • Mögliches Duplikat von Leere Elemente aus einem Array in Javascript entfernen

    – jeprubio

    15. April 2019 um 8:24 Uhr

  • Mögliches Duplikat von Entfernen Sie leere Zeichenfolgen aus dem Array, während Sie die Aufzeichnung ohne Schleife beibehalten?

    – Adi

    15. April 2019 um 8:57 Uhr

Benutzeravatar von Dominik
Dominik

Sie könnten den Filter wie folgt verwenden:

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

Beispiel:

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

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

Weil eine leere Zeichenfolge zu boolesch ausgewertet wird false. Es funktioniert mit allen falschen Werten wie 0, false, null, undefined, ''etc.

DEMO

Wenn Sie einige Werte wie number behalten möchten 0 (Null) Sie verwenden könnten item !== undefined. Dadurch werden nur undefinierte Werte gefiltert. Denken Sie daran, Ihre Zeichenfolge zu kürzen oder mit Regex zu überprüfen, um sicherzustellen, dass leere Zeichenfolgen ohne Leerzeichen vorhanden sind.

  • Hat auch in Google Apps Script funktioniert.

    – DavChana

    8. Mai 2021 um 17:02 Uhr

Versuchen Sie, mit dem zu filtern Boolean Funktion:

columns.filter(Boolean)

Dadurch werden alle falschen Werte herausgefiltert

Es ist, weil, wenn Sie columns[0].splice(i, 1); Sie ändern dasselbe Array, über das Sie iterieren, sodass Sie möglicherweise einen Array-Filter wie verwenden möchten

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

Anstelle der for-Schleife

nach dem Erstellen des Spaltenarrays,

Filtern Sie die leeren Werte so

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

Verwenden Sie einfach die Filterfunktion:-

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

Leere Werte werden entfernt.

Benutzeravatar von Jack Bashford
Jack Bashford

Wenn einige Werte sein könnten 0filtern Sie, indem Sie gegen prüfen "" (Weil 0 wertet zu false auch, so dass boolesche Prüfungen fehlschlagen 0):

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

Nehmen wir an, Sie haben in ES6 das folgende Array:

arr = [1, 2, 3, '', false, '4'];

Und Sie möchten entfernen '' (Was ein leerer Wert ist) aus dem Array. Du kannst tun:

const filter = (...args) => args.filter(el => el !== '');
console.log(filter(...arr));
[1, 2, 3, false, "4"] // Output

Oder mit Map (reguläres JS)

const myArr = [1, 2, '', '4'];

noEmptyStringInThisArray = [];

myArr.map((elem) => {
    if (elem !== '') {
    noEmptyStringInThisArray.push(elem);
    }
})

console.log(noEmptyStringInThisArray);
// [1, 2, "4"]

  • Für es6 ist das eine ziemlich umständliche Methode, um leere Zeichenfolgen zu entfernen. Du kannst auch: arr.filter(val => val);

    – Vizon

    13. April um 15:05 Uhr


1404500cookie-checkWie entferne ich leere Array-Werte (“”) aus einem Array?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy