首页 > 解决方案 > 为什么不返回结果的数组上的过滤器方法不会在javascript中给出一个空数组?

问题描述

我正在尝试在 Javascript 中的数组上使用带有过滤器方法的条件。我遇到的问题是将一个空数组与一个应该为空的过滤数组进行比较,因为过滤器没有返回任何结果,并且根据MDN 文档应该返回一个空数组并没有达到预期的结果。

我尝试在终端的 Node.js 会话以及https://www.codewars.com的测试环境中创建空数组。

// 我的终端上的节点环境

const emptyArr = []

const arr2 = [1, 1, 2, 2]

const testArr = arr2.filter((iso) => iso >= 3)

testArr === emptyArr //prints false, but should be true

预期的结果应该是真的,因为根据 MDN,一个空过滤器会返回一个空数组。然而,实际结果是错误的,这意味着过滤后的数组实际上不是空的。

标签: javascriptarraysnode.jsmethods

解决方案


这是一个回答这个问题的帖子: https ://stackoverflow.com/a/38548366/4447481

[] === []false因为它们是两个不同的空数组。

您需要比较两个数组的内容以确定相等性。

在您的情况下,您可能需要检查长度,如下所示:

if(!arr1.length && !arr2.length) {
    /* do something */
}

推荐阅读