下划线模板,将列表添加到单个数组中

Underscore template, adding a list into a single array?

本文关键字:单个 数组 添加 列表 下划线      更新时间:2023-09-26

我有一个模板,它工作正常,但我正在尝试构建一个数组,最终目标是获得这些值的总和。

所以我的模板给了我以下值列表,

    10
    23
    14
    1

等,对于我的数据库中的每个值,它循环良好。但是我想要这个列表中的总数,我已经在行中完成了,但这会遍历数据库中的每一行。所以我的目标是(请告诉我是否有更好的方法)是通过将每个值推入模板中的新数组,然后将数组相加,给我一个总计,将其构建为单个数组。

所以我的模板看起来像这样,

<script type="text/template" id="TimesheetData">
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.jobtitle  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.mon  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.tue  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.wed  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.thu  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.fri  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.sat  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.sun  %>">
  <span>Weekly total : <span class="TimeSheetWeekly<%= Timesheetrow.index %>"></span></span>
<%
    var WeeklyArray = [Timesheetrow.mon, Timesheetrow.tue, Timesheetrow.wed, Timesheetrow.thu, Timesheetrow.fri, Timesheetrow.sat, Timesheetrow.sun];
    var WeeklyTotals = 0;
    for (var i = 0; i < WeeklyArray.length; i++) {
        WeeklyTotals += WeeklyArray[i] << 0;
    }
    _.defer(function(){ 
        var WeeklyTotalTag = '.TimeSheetWeekly'+ Timesheetrow.index;
        $( WeeklyTotalTag ).html(WeeklyTotals); 
    }) 

%>
</script> 

但是当我尝试使用.zip.map时,我似乎无法构建数组。它似乎只是将每个值放入自己的数组而不是总数组中?

那我做错了什么呢?

谢谢

  • 如果我没有清楚地解释自己,请告诉我,我会编辑我的帖子。

这是一个工作 jsfiddle

我使用reduce来计算数组的总和。

<%= _.reduce(_.values(_.pick(Timesheetrow, 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')), function(a, b) {return a + b}, 0) %>

完整模板:

<script type="text/template" id="TimesheetData">
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.jobtitle  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.mon  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.tue  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.wed  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.thu  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.fri  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.sat  %>">        
  <input type="type" name="data[Timesheetrow][<%= Timesheetrow.index %>][jobtitle]" value="<%= Timesheetrow.sun  %>">
  <span>Weekly total : <span class="TimeSheetWeekly<%= Timesheetrow.index %>">
    <%= _.reduce(_.values(_.pick(Timesheetrow, 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')), function(a, b) {return a + b}, 0) %>
  </span></span>
</script>