You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EJS循环中动态拼接属性名获取获胜者姓名返回NaN问题求解

问题解决方法

错误原因

你的代码问题源于运算符优先级和动态属性访问语法错误:

  • JavaScript 中.运算符优先级高于+,你写的event[0].winner+i.name实际执行时会先读取event[0].winner(你的数据中不存在该属性,返回undefined),再读取i.name(i是数字类型,没有name属性,返回undefined),两者相加最终得到NaN。
  • 动态拼接的属性名不能用.直接访问,需要使用方括号[]语法读取对象属性。

修复方案

将原来的取值代码替换为方括号动态属性访问写法即可,完整循环代码如下:

<%   for (var i=1; i <= event[0].eventWinners; i++ ) { %>
  <td>
    <%= event[0]['winner' + i].name %>
  </td>
<% } %>

补充说明:你给出的样本数据存在语法笔误,event[0]应为对象而非数组,只要实际数据结构符合event[0]下挂载winner1到winnerN属性的结构,上述代码就可以正常输出对应获胜者的name值。


内容的提问来源于stack exchange,提问作者creativated

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:30:01