0

I am running this code in EJS

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

Actually, I want it to render if there are 4 winners in the loop.

<%= event[0].winner1.name %>
<%= event[0].winner2.name %>
<%= event[0].winner3.name %>
<%= event[0].winner4.name %>

But I get NaN as result. Any advice?

Adding data sample here

[
eventWinners : 5,
winner1 :{name: "abc"},
winner2 :{name: "abc2"},
winner3 :{name: "abc3"},
winner4 :{name: "abc3"},
winner4 :{name: "abc4"},
]
creativated
  • 211
  • 3
  • 16

1 Answers1

0

Instead of summing the winner with the name, you have to create the dynamic field scanning:

<%   for (var i=1; i <= event[0].eventWinners; i++ ) { %>
  <td>
    <% Object.keys(event[0]).filter(c => c.startsWith("winner")).forEach(c => { %>
       <%= event[0][c].name %>
    <% }) %>
  </td>
<% } %>
Ionică Bizău
  • 109,027
  • 88
  • 289
  • 474