比较两个不在javascript中工作的空数组

比较两个不在javascript中工作的空数组,javascript,node.js,Javascript,Node.js,在我当前的项目中,我接受一个值为数组或字符串的请求参数。但如果我得到一个数组,它将是一个空数组。所以我首先检查了类型,然后处理了值。但后来我做了类似的事情 const reqParam = [] if (reqParam === []) { console.log('empty array') } else { console.log('string') } 但是,reqParam尽管是一个空数组,但与[]相比,它给了我false。为什么会这样?提前感谢。您的代码创建了两个不同

在我当前的项目中,我接受一个值为数组或字符串的请求参数。但如果我得到一个数组,它将是一个空数组。所以我首先检查了类型,然后处理了值。但后来我做了类似的事情

const reqParam = []
if (reqParam === []) {
    console.log('empty array')
} else {
    console.log('string')
}

但是,
reqParam
尽管是一个空数组,但与
[]
相比,它给了我false。为什么会这样?提前感谢。

您的代码创建了两个不同的数组,这就是为什么比较返回
false
<代码>=将只比较它们的引用,而不比较它们的内容。

为什么不检查长度数组?如果(reqParam.length==0)@IsraGab,则OP不需要这种逻辑。他们想知道它是否是空数组,如果不是,则将其视为字符串
reqParam=[42]
可能不应被视为字符串。也就是说,
if(Array.isArray(reqParam)&&reqParam.length==0)
对于空数组就足够了check@JamieWeston我会的,但这个问题是重复的,应该参考答案there@IsraGab您是对的,但如果字符串为空,我的意思是
reqParam=“”
然后
reqParam.length
也将是0。顺便说一句,
reqParam==”
将计算为true:)(是的,JS中的比较可能很有趣)你是对的,但即使
reqParam=[]
也将返回false。这不是问题的答案。@mhodges如果你花时间阅读了网站的规则,你就会知道在没有标记为重复的帖子上回答是可以的。不仅如此,现在只有一个人认为这是重复的。@Derek朕會功夫 您还拥有审核权限,有责任将问题标记为重复问题,而不是回答问题。@mhodges是的,我有,但我不会,因为这两个问题解决不了同一个问题。OP试图检查请求中的数组是否确实为空,而不是比较两个数组,看它们是否有相同的内容。(意见):我不同意这两种说法。这应该被标记为dupe,因为它不会为其他访问者提供任何信息,但回答仍然可以,因为它可以帮助OP进行多页的解释