Таблицы данных — исключение определенных строк из расчета нижнего колонтитула

У меня есть таблица, которая вычисляет общее количество всех строк в нижнем колонтитуле. Мой вопрос: могу ли я опустить определенные строки на основе критериев.

Например, у меня есть сезонная статистика для бейсболиста, а в нижнем колонтитуле указано общее количество его карьеры. Этот конкретный игрок играл за две разные команды в сезоне 2018 года. На это указывает TOTAL в поле лиги LEAGUE, в которое я добавил его общую статистику для каждой команды в этом сезоне. Итак, взглянув на таблицу, вы должны заметить:

У него было 1 HITS в сезоне 2017 года для STL

У него было 15 HITS за сезон 2018 (5 за LAD и 10 за BAL)

Учитывая это, вы должны увидеть, что общее количество его карьеры в нижнем колонтитуле было подсчитано неправильно. У него должно быть 16 карьер, а не 31. Поэтому, чтобы исправить это, я хотел бы исключить все строки, в которых есть TOTAL в столбце LEAGUE, из подсчета в итоговом колонтитуле. Как бы я это сделал? Любая помощь здесь будет принята с благодарностью. Спасибо.

YEAR    Name        AGE  TEAM   LEAGUE   HITS   
2017    John Smith  25   STL    NL       1
2018    John Smith  26          TOTAL    15
2018    John Smith  26   LAD    NL       5
2018    John Smith  26   BAL    AL       10
        Career Total                     31

Вот мой код

<div align = "center">
         <table id = 'battingtbl' class = "display compact nowrap">
        <thead>
            <tr>
                <th>YEAR</th>
                <th>NAME</th>
                <th>AGE</th>
                <th>TEAM</th>
                <th>LEAGUE</th>
                <th>HITS</th>
            </tr>
        </thead>
        <tbody>
        {% for stat in playerdata.bbhittingstatsmstr_set.all %}
            <tr>
                <td>{{ stat.year }}</td>
                <td>{{ stat.name }}</td>
                <td>{{ stat.age }}</td>
                <td>{{ stat.team }}</td>
                <td>{{ stat.league }}</td>
                <td>{{ stat.hits }}</td>
            </tr>
        {% endfor %}
        </tbody>
             <tfoot>
                    <tr>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th></th>
                        <th></th>
                    </tr>
             </tfoot>
        </table>
                <script>
                    $(document).ready(function () {
                        $('#battingtbl').DataTable({
                            "searching": true,
                            "pageLength": 40,
                            "scrollX": true,
                            "paging": false,
                            "info": false,
                            drawCallback: () => {
                                const table = $('#battingtbl').DataTable();
                                const tableData = table.rows({
                                        search: 'applied'
                                    }).data().toArray();
                                const totals = tableData.reduce((total, rowData) => {
                                        total[0] += parseFloat(rowData[5]);          <!--HITS -->
                                        return total;
                                    }, [0,0,0,0,0,0]);
                                $(table.column(5).footer()).text(totals[0]);         <!--HITS -->
                            }
                        })
                    });
                </script>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте оператор if в вызов tableData.reduce:

const totals = tableData.reduce((total, rowData) => {
    if (rowData[4] !== 'TOTAL') {
        total[0] += parseFloat(rowData[5]);          <!--HITS -->
    }
    return total;
}, [0,0,0,0,0,0]);

$(table.column(5).footer()).text(totals[0]);         <!--HITS -->

Также вы можете упростить начальное значение вызова reduce (3-й аргумент):

// totals is a Number not an Array
const totals = tableData.reduce((total, rowData) => {
    if (rowData[4] !== 'TOTAL') {
        total += parseFloat(rowData[5]);          <!--HITS -->
    }
    return total;
}, 0);

$(table.column(5).footer()).text(totals);

Все еще не работает правильно. Когда я выхожу из .toArray(), я получаю 0 в столбце HITS. Если я просто скопирую и вставлю то, что у вас есть, и оставлю это, я ничего не получу в нижнем колонтитуле (даже 0)

Nick T 30.05.2019 23:21

Я делаю это правильно? snipper.io/s/-Lg9cLbCOT8HlrMY6sPT . Кажется, это не сработало для меня.

Nick T 30.05.2019 23:26

Я только что заметил ошибку в своем коде - извините за это. Я обновил код - попробуйте второй фрагмент еще раз.

JME 30.05.2019 23:30

Это сделало это! Бесконечно благодарен!

Nick T 30.05.2019 23:32

Другие вопросы по теме