Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据对象数组中字段的最大值限制HTML列元素_Javascript_Node.js_Pug - Fatal编程技术网

Javascript 如何根据对象数组中字段的最大值限制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。在

我有一个从Node/mongo/express接收对象数组的pug模板。根据其中一个字段的最大值(不是长度),我需要限制html表中的一些列

例如,从节点渲染的对象可能如下所示

{
    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>