【问题标题】:How to filter off a blank array? React/Javascript/Es6如何过滤掉一个空白数组?反应/Javascript/Es6
【发布时间】:2020-11-27 21:33:41
【问题描述】:

我正在尝试通过数组进行过滤。我做了一个 useEffect ,它存储每个传递到它自己状态的对象。这包括默认的useState([]) 空白数组。我正在尝试创建一个功能来删除它。这是函数:

const checker = [null, undefined, [{}], {},[],''];

    const filterredArray = newArray.filter((item) => !checker.includes(item));
    console.log(filterredArray);

即使我运行它,我仍然会得到如下图所示的空白数组index[0]。我应该在 checker 变量中放入什么条件来检查和删除空白数组?:

【问题讨论】:

  • 你的预期输出是什么?
  • 预期结果是对象不包含显示的空白数组。正如您在图片中看到的那样 index[0] 什么都不包含

标签: javascript arrays reactjs sorting foreach


【解决方案1】:

我不确定我是否正确理解了您的问题,但您的过滤将失败,因为.includes 检查对象引用。

如果你有

const newArray = [{}]

const checker = [null, undefined, [{}], {} ,[], ''];

const filteredArray = newArray.filter((item) => !checker.includes(item));
console.log(filteredArray);

filteredArray 仍将包含 {},因为 {} === {} 的计算结果为 false

要解决这个问题,您可以使用“深度相等”来比较对象,例如使用 lodash

const filterredArray = newArray.filter((item) => !checker.some(check => _.isEqual(check, item)));

【讨论】:

  • 我会试试的。基本上我希望那个空白数组脱离我的状态。
  • 成功了。我不敢相信我刚刚发现了 lodash。啊啊啊!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2020-02-24
  • 2018-06-03
  • 1970-01-01
相关资源
最近更新 更多