如何从数组中删除空值("")?

31

我有一个二维数组,用jQuery从HTML表格生成,但是有些值是空的,所以显示为""

我该如何去掉这些空值?

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

我已经尝试了以下代码:

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

对于一些空值,它是有效的,但由于某种原因,并非所有空值都被删除了。

输出:https://imgur.com/e7BAdQK


请提供一些演示代码。请使用jsfiddle或其他工具。因为空白可能来自许多不同的事物。 - Deckerz
3
在for循环的下方添加columns = columns.filter(a => a!="")。该语句的作用是过滤掉columns数组中为空字符串的元素,并将非空元素重新赋值给columns变量。 - alt255
11个回答

0
如果需要保留某些类型的假值,可以在检查值是否为真值之前进行过滤以包含这些假值。下面的示例保留了数值零,但删除了任何被视为空的其他内容。
相反,可以过滤掉特定类型的空值。
最后,如果对于空值的含义没有复杂性,可以简单地检查是否为真值。

let values = [0, 1, 0.0, 1.0, '0', '1', true, false, '', , null, undefined];

//keep numeric, remove all other empty values
console.log(values.filter(x => [0].includes(x) || x));

//only remove certain types of empty values
console.log(values.filter(x => ![null, undefined].includes(x)));

//only keep truthy values, remove all falsy values
console.log(values.filter(x => x));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接