字符串相等性未产生预期的输出

String equality not producing expected output

提问人:Lux 提问时间:2/10/2023 最后编辑:Lux 更新时间:2/10/2023 访问量:25

问:

我试图将两个变量等同于其他一些代码,但尽管是相同的字符串,我还是一直得到错误。这是我写的代码:

app.post('/deletegraph', requireLogin, async (req, res) => {
    let {graph_name} = req.body
    console.log(graph_name)
    const user = await User.findById(req.session.user_id)
    console.log(user.graphs)
    for (let graph of user.graphs) {
        console.log(graph[1])
        console.log(graph_name)
        console.log(graph[1] === graph_name)
    }
    res.redirect('/graphs')
})

这是终端中的输出:

xsquared  
[  
[ 'http://localhost:3000/', 'xsquared', '.png' ],  
[ 'http://localhost:3000/', '2 exponent x', '.png' ]  
]  
xsquared  
xsquared  
false  
2 exponent x  
xsquared  
false  

正如你所看到的,我的graph_name变量等于'xsquared',在user.graphs的第一次迭代中,graph[1]等于'xsquared'。这应该输出 true,但我得到 false。有谁知道怎么了?

我使用了console.log,以便我知道变量是什么,但是即使我看到它们是相同的,我也会得到false。我试过双等和三等,它们都给我错了。

JavaScript 数组表示 猫鼬 相等

评论

0赞 Andrew Parks 2/10/2023
如果你执行 console.log(String(graph[1]) === String(graph_name)) 会发生什么?
0赞 Lux 2/10/2023
我试过了,但现在两个迭代都是真的,而第二个迭代应该是假的。
0赞 Yarin_007 2/10/2023
有趣。运行时会发生什么情况console.log(encodeURIComponent(graph[1]), encodeURIComponent(graph_name))
0赞 Yarin_007 2/10/2023
或 和日志记录(与 相同)。我的猜测是某处有某种空白或特殊的字符。嗯,虽然这与 S 比较是否正确不一致let buff = new Buffer(graph_name);let base64data = buff.toString('base64');base64datagraph[1]String()
0赞 TBA 2/10/2023
是什么类型的?(打印的结果是什么req.bodyconsole.log(typeof req.body, typeof graph_name);)

答: 暂无答案