亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對于其他 2 列中的每個唯一組合值,一列中的 Javascript 頁腳回調總和值

對于其他 2 列中的每個唯一組合值,一列中的 Javascript 頁腳回調總和值

ITMISS 2023-06-15 17:08:23
我有一份不同日期的公司股息支付報告,其中重復了每次支付的持股價值。每個獨特的 Portfolio.Symbol 可能有多次付款,但每次付款只會重復一個值。我需要對每個獨特的 Portfolio.Symbol 組合的值列中的值求和。Date        Portfolio  Symbol   Value  Payment.   Sum Value2020-11-27  DEA        GSK      26000  30.        260002020-11-30  ISA        GSK      44000  30.        440002021-06-30  ISA        GSK      44000  30.        0, repeat of ISA.GSK so ignore2021-06-30  DEA        GSK      26000  30.        0, repeat of DEA.GSK so ignoreUnique Sum                      70000   So in the above example Sum of Value should be Sum of last column 26000+44000=70000我已經設置了一個jsfiddlehttps://jsfiddle.net/cpshart/s478gvcj/53/作為使用 datatables.net 頁腳回調的起點如果有人可以幫助我獲得解決方案,將不勝感激。非常感謝
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

在您在 jsfiddle 中提供的代碼中,您似乎沒有添加僅添加唯一數據的條件。然后作為解決方案,您可以嘗試使用以下代碼:


$(document).ready(function() {

  $('#example').DataTable({

    "footerCallback": function(row, data, start) {

      var api = this.api();


      var intVal = function(i) {

        return typeof i === 'string' ?

          i.replace(/[\$,]/g, '') * 1 :

          typeof i === 'number' ?

          i : 0;

      };


      var indexOfPortofolio = 1;

      var indexOfSymbol = 2;

      var indexOfValue = 3;


      // Total over all pages

      var total = api

        .rows()

        .data()

        .toArray()

        .reduce(function(a, v, i) {

          var uniquePortofolioSymbol = v[indexOfPortofolio] + v[indexOfSymbol];

          if (a.uniqueList.indexOf(uniquePortofolioSymbol) === -1) {

            a.sum += intVal(v[indexOfValue]);

            a.uniqueList.push(uniquePortofolioSymbol);

            a.uniqueIndex.push(i);

          }

          return a;

        }, { sum: 0, uniqueList: [], uniqueIndex: [] });


      // Total over this page

      var pageTotal = api

        .rows({ page: 'current' })

        .data()

        .toArray()

        .reduce(function(a, v, i) {

          var uniquePortofolioSymbol = v[indexOfPortofolio] + v[indexOfSymbol];

          if (

            a.uniqueList.indexOf(uniquePortofolioSymbol) === -1

            && total.uniqueIndex.indexOf(start + i) !== -1

          ) {

            a.sum += intVal(v[indexOfValue]);

            a.uniqueList.push(uniquePortofolioSymbol);

          }

          return a;

        }, { sum: 0, uniqueList: [] });


      // Update footer

      $(api.column(3).footer()).html(

        pageTotal.sum + ' ( ' + total.sum + ' )'

      );

    }

  });

});

<link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css">

<script src="https://code.jquery.com/jquery-3.5.1.js"></script>

<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>


<table id="example" class="display" style="width:100%">

  <thead>

    <tr>

      <th>Date</th>

      <th>Portfolio</th>

      <th>Symbol</th>

      <th>Value</th>

      <th>Payment</th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <td>2020-11-30</td>

      <td>ISA</td>

      <td>RLSEB</td>

      <td>30000</td>

      <td>30</td>

    </tr>

    <tr>

      <td>2021-06-30</td>

      <td>ISA</td>

      <td>GSK</td>

      <td>44000</td>

      <td>30</td>

    </tr>

    <tr>

      <td>2020-11-30</td>

      <td>ISA</td>

      <td>GSK</td>

      <td>44000</td>

      <td>30</td>

    </tr>

    <tr>

      <td>2020-11-27</td>

      <td>DEA</td>

      <td>GSK</td>

      <td>26000</td>

      <td>30</td>

    </tr>

    <tr>

      <td>2021-02-30</td>

      <td>ISA</td>

      <td>RLSEB</td>

      <td>30000</td>

      <td>50</td>

    </tr>

    <tr>

      <td>2021-05-30</td>

      <td>ISA</td>

      <td>RLSEB</td>

      <td>30000</td>

      <td>54</td>

    </tr>

    <tr>

      <td>2021-05-30</td>

      <td>ISA</td>

      <td>RLSEB</td>

      <td>30000</td>

      <td>57</td>

    </tr>

    <tr>

      <td>2021-05-30</td>

      <td>DEA</td>

      <td>RLSEB</td>

      <td>20000</td>

      <td>27</td>

    </tr>

    <tr>

      <td>2021-05-30</td>

      <td>DEA</td>

      <td>RLSEB</td>

      <td>20000</td>

      <td>27</td>

    </tr>

    <tr>

      <td>2021-05-30</td>

      <td>ISA</td>

      <td>RLSEB</td>

      <td>30000</td>

      <td>31</td>

    </tr>

    <tr>

      <td>2021-05-30</td>

      <td>DEA</td>

      <td>RLSEB</td>

      <td>20000</td>

      <td>22</td>

    </tr>

  </tbody>

  <tfoot>

    <tr>

      <th colspan="3" style="text-align:right">Total:</th>

      <th></th>

    </tr>

  </tfoot>

</table>



查看完整回答
反對 回復 2023-06-15
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號