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

时间:2019-04-15 08:17:39

标签: javascript jquery html arrays 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>

我已经尝试了以下代码:

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

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

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

7 个答案:

答案 0 :(得分:2)

创建columns数组后,

像这样过滤空值

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

答案 1 :(得分:2)

尝试使用Boolean函数进行过滤:

columns.filter(Boolean)

这将滤除所有虚假值

答案 2 :(得分:2)

这是因为当您columns[0].splice(i, 1);更改要迭代的同一数组时,您可能想使用像这样的数组过滤器

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

代替for循环

答案 3 :(得分:2)

只需使用过滤器功能:-

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

它将删除空值。

答案 4 :(得分:2)

如果某些值可能是0,请通过检查""进行过滤(因为0的计算结果也为false,因此布尔检查将{{1} }):

0

答案 5 :(得分:1)

您可以使用以下过滤器:

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

示例:

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

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

因为一个空字符串计算为布尔值false。 它适用于所有伪造的值,例如0falsenullundefined''等。

https://stackblitz.com/edit/js-remove-empty-array-items?embed=1&file=index.js

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

答案 6 :(得分:0)

您可以轻松地从数组中删除 emptynullundefined 值。

let my_array = ['One', undefined, 'Two', '', null, 'Four', '', '', 'Five'];

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

console.log(my_array);