Datatables - получение итоговых значений при нулевых значениях - PullRequest
0 голосов
/ 05 июня 2019

Я использую DataTables для вычисления всех строк в столбце и отображения итогов в нижнем колонтитуле таблицы.

Вот проблема: Кажется, что всякий раз, когда в любомиз строк столбца, который я вычисляю, итоговое значение отображается как NaN.

Как заставить DataTables игнорировать нулевые значения в столбце и просто суммировать ненулевые значения?

<div align="center">
     <table id = 'mytabl' class="display compact nowrap">
    <thead>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
        </tr>
    </thead>
    <tbody>
    {% for num in numberdata.mytable_set.all %}
        <tr>
            <td>{{ num.col1 }}</td>
            <td>{{ num.col2 }}</td>
        </tr>
    {% endfor %}
    </tbody>
         <tfoot>
                <tr>
                    <th></th>
                    <th></th>
                </tr>
         </tfoot>
    </table>
            <script>
            $(document).ready(function() {
              $('#mytabl').DataTable({
                "searching": true,
                "pageLength": 40,
                "scrollX": true,
                "paging": false,
                "info": false,
                drawCallback: () => {
                  const table = $('#mytabl').DataTable();
                  const tableData = table.rows({
                    search: 'applied'
                  }).data().toArray();
                  const totals = tableData.reduce((total, rowData) => {
                    total[0] += parseFloat(rowData[1]);
                    total[1] += parseFloat(rowData[2]);
                    return total;
                  }, [0, 0]);
                  $(table.column(1).footer()).text(totals[0]);
                  $(table.column(2).footer()).text(totals[1]);
                }
              })
            });
            </script>

1 Ответ

1 голос
/ 05 июня 2019
const totals = tableData.reduce((total, rowData) => {
                total[0] += rowData[1] ? parseFloat(rowData[1]) : 0;
                total[1] += rowData[2] ? parseFloat(rowData[2]) : 0;
                return total;
              }

Как насчет этого, если значение равно нулю, добавить ноль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...