【问题标题】:ejs + nodejs - compare two variables doesn't workejs + nodejs - 比较两个变量不起作用
【发布时间】:2020-11-20 21:36:17
【问题描述】:

我在 nodejs 中渲染期间传递了两个变量。假设它们是模板和 treeInfo。

在 template.ejs 我有。

        <% for(var i=0; i<templates.length; i++) {%>
          <%= templates[i]._id %> = <%= treeInfo.owner[0] %><br>
          <% if (templates[i]._id == treeInfo.owner) { %>
              ok
          <% } %>
        <% } %>

所以实际上 if == 没有按预期工作。这是输出。

59519779f36d284c166f9bea = 5941789e36593262bed9256b

5941789e36593262bed9256b = 5941789e36593262bed9256b

所以它不会以正确的方式比较它们。如果我只是将 treeInfo.owner 替换为“5941789e36593262bed9256b”之类的内容,它确实可以正常工作。

我假设 ejs 不支持变量比较?

谢谢

【问题讨论】:

  • 嘿,我刚刚看到您通过执行 templates[i]._id = treeInfo.owner[0] 来完成作业。但是你将它与 treeInfo.owner 进行比较。不应该是'if (templates[i]._id == treeInfo.owner[0])'。正在使用对象的值进行比较。
  • 嗨杜安,无论哪种方式都行不通:/
  • 最后我做了 JSON.stringify(templates[i]._id) == JSON.stringify(treeInfo.owner[0]) 现在它工作正常。谢谢!
  • 酷。是的,我只是告诉你你没有包含 treeInfo.owner[0] 而是与 treeInfo.owner 进行比较的错字。猜猜它在 JSON.stringify 解决方案中得到纠正。

标签: node.js ejs


【解决方案1】:

变量类型看不懂,所以需要toString()。

<% for(var i=0; i<templates.length; i++) {%>
  <%= templates[i]._id %> = <%= treeInfo.owner[0] %><br>
  <% if (templates[i]._id.toString() == treeInfo.owner.toString()) { %>
         __append('Hello World');
 <% } %>

【讨论】:

    【解决方案2】:

    在 EJS 和 nodejs 中比较两个对象/变量

    if(user1.equals(user2))
    {
    console.log("Both are equal");
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多