【问题标题】:How to remove null from array in JavaScript如何在 JavaScript 中从数组中删除 null
【发布时间】:2019-04-10 16:52:02
【问题描述】:

我想删除数组中的空元素

 [ [ null, [ [Array], [Array] ] ] ]

所需的结构是 [ [[Array],[Array]], [[Array],[Array]], [[Array],[Array]] ]

如果任何对象未定义/为空,例如:

[ [[Array],[]],  [[Array],[Array]],  [[Array],[Array]] ]

我希望删除整个元素[[Array],[]]

“是”和“否”正确识别了哪些元素具有未定义。所以我知道这段代码运行正常。我尝试将空数组分配为 null,然后通过添加到新数组来过滤 if != null 但它不起作用。

var filter = Total[0][i];

filter.forEach(e => {
    if ((e[0] !== undefined)&&(e[1] !== undefined)) {
        console.log('yes');
    } else {
        console.log('no');
        Total[0][i] = null;
    }
});

var totalArray = [];

const resultFilter = Total.filter(arr => arr != null);

var Filtereddata = resultFilter.filter(function(element) {
    return element !== null;
}

我不确定如何删除元素或过滤到没有 null 的新数组中。 空数组导致客户端出现问题,额外的, 最好完全删除索引/元素。

【问题讨论】:

  • 空数组不是未定义或为空
  • 请使用创建示例输入的代码和您想要的输出示例更新问题。

标签: javascript arrays null


【解决方案1】:

你可以递归过滤掉nulls:

 const noNull = array => array
    .map(el => Array.isArray(el) ? noNull(el) : el)
    .filter(it => it !== null);

如果你还想删除空数组,可以将[]替换为null

 const noEmpty = array => array.length ? array : null;

然后将递归调用从noNull(el)改为noEmpty(noNull(el))

【讨论】:

  • 太棒了,非常感谢!这对我有用! :)
  • @annaM 很高兴为您提供帮助 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多