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

Hou*_*97_ 14 html javascript arrays jquery json

我有一个二维数组,是用 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>
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下代码:

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

它适用于一些空值,但由于某种原因,并非所有值都被删除。

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

Dom*_*nik 67

您可以使用过滤器,如:

arr = arr.filter(item => item);
Run Code Online (Sandbox Code Playgroud)

例子:

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

// Result
// ['One', 'Two', 'Four']
Run Code Online (Sandbox Code Playgroud)

因为空字符串的计算结果是 boolean false。它的工作原理与所有falsy值喜欢0falsenullundefined'',等。

演示

如果你想保留一些像数字0(零)这样的值,你可以使用item !== undefined. 这仅过滤未定义的值。请记住修剪字符串或使用正则表达式检查以确保没有空格的空字符串。


the*_*ude 10

尝试使用Boolean函数过滤:

columns.filter(Boolean)
Run Code Online (Sandbox Code Playgroud)

这将过滤掉所有虚假值