How to remove empty array values ("") from an array?
Solution 1
You could use the filter like:
arr = arr.filter(item => item);
Example:
let arr = ['One', 'Two', '', 'Four', '', ''];
arr = arr.filter(item => item);
console.log(arr);
// Result
// ['One', 'Two', 'Four']
Because an empty string evaluates to boolean false
.
It works with all falsy values like 0
, false
, null
, undefined
, ''
, etc.
If you want to keep some values like number 0
(zero) you could use item !== undefined
. This filters only undefined values. Keep in mind to trim your string or check with regex to ensure empty strings without whitespaces.
Solution 2
Try filtering with the Boolean
function:
columns.filter(Boolean)
This will filter out all falsy values
Solution 3
It's because when you columns[0].splice(i, 1);
you are changing the same array you are iterating over so you might want to use an array filter like
columns[0] = columns[0].filter((val) => val != "");
instead of the for loop
Solution 4
after creating the columns array,
filter the empty values like that
columns = columns.filter((v) => v != '')
Solution 5
If some values might be 0
, filter by checking against ""
(because 0
evaluates to false
as well, so Boolean checks will fail for 0
):
columns[0].filter(col => col != "");
House97_
Updated on July 12, 2022Comments
-
House97_ almost 2 years
I have an two dimensional array, generated from a html table with jQuery, but some values are empty so
""
is displayed.How can I remove the empty values?
<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>
I already tried following code:
for( var i = 0; i < columns[0].length; i++){ if ( columns[0][i] === "") { columns[0].splice(i, 1); } }
It worked for some empty values, but not all of them got removed for some reason.
Output: https://imgur.com/e7BAdQK