Javascript 如何根据对象数组中字段的最大值限制HTML列元素
我有一个从Node/mongo/express接收对象数组的pug模板。根据其中一个字段的最大值(不是长度),我需要限制html表中的一些列 例如,从节点渲染的对象可能如下所示Javascript 如何根据对象数组中字段的最大值限制HTML列元素,javascript,node.js,pug,Javascript,Node.js,Pug,我有一个从Node/mongo/express接收对象数组的pug模板。根据其中一个字段的最大值(不是长度),我需要限制html表中的一些列 例如,从节点渲染的对象可能如下所示 { quantity: 4, years: 6 }, { quantity: 78, years: 2 } 然后,我需要将表中“year”列的数量限制为6。我不确定最好的方法是什么,是否在node中呈现一个额外的“max”变量,是否可以在pug中这样做,或者是否应该使用一些客户端js。在
{
quantity: 4,
years: 6
},
{
quantity: 78,
years: 2
}
然后,我需要将表中“year”列的数量限制为6。我不确定最好的方法是什么,是否在node中呈现一个额外的“max”变量,是否可以在pug中这样做,或者是否应该使用一些客户端js。在(非常)伪代码中,我想要这样的东西
forEach(Math.max(project.output.years)){
...create an html table 'year' column
}
我不确定帕格是否是进行这种数据操作的正确工具 从nodejs端,您可以使用一个reducer来查找最大年份值,并将其与其余数据一起发送
const数据=[{
数量:4,
年份:6,
},
{
数量:78,
年份:2,
},
]
const maxYears=data.reduce((acc,current)=>current.years>=acc?current.years+acc:acc,0)
console.log(maxYears)//6
有许多方法可以找到最大值,但最简单的方法是:
var maxYears = 0;
for(var i = 0 ; i < data.length ; i++){
if( data[i].years > maxYears ){
maxYears = data[i].years;
}
}
这将为maxYears=3
生成如下表:
<table>
<tr>
<td colIndex='0'></td>
<td colIndex='1'></td>
<td colIndex='2'></td>
</tr>
</table>
对每一行重复这个循环。您在这里到底想做什么?我不清楚您是想找出数据的最大年数,还是想限制表中生成的列数。标题说的是后者,问题文本说的是前者。@Graham都是-我想把列数限制在最大年数内。这两者的结合导致了我的问题-我是否应该在节点中预加载“max years”作为变量,以在模板中呈现,然后以某种方式在html中进行限制,我是否应该/是否可以使用客户端JS来确定最大值并从中创建DOM元素……等等。如果使用pug,最佳做法是使用节点来限制最大年数,然后使用pug中的
每个循环列。
<table>
<tr>
<td colIndex='0'></td>
<td colIndex='1'></td>
<td colIndex='2'></td>
</tr>
</table>