Как получить значение данных и рассчитать в Jquery? - PullRequest
0 голосов
/ 12 января 2020

У меня есть таблица, касающаяся рождения и смерти каждого человека. Я создал объект JSON, вложенный в массив.

Как рассчитать возраст смерти каждого человека, включенного в данные? Я думаю, что я делаю это неправильно

Кроме того, что я должен сделать, чтобы получить значение в данных для расчета и отображения внутри таблицы?

вот мой код.

$(document).ready(() => {

    let data = [{ // JSON Object nested in Array 
        "firstname": "Harold",
        "lastname": "Mullins",
        "birthdate": "07/04/1864",
        "deathdate": "09/11/1891"
    }, {
        "firstname": "Sarah",
        "lastname": "Houseman",
        "birthdate": "09/04/1864",
        "deathdate": "01/10/1876"
    }, {
        "firstname": "Alice",
        "lastname": "Davis",
        "birthdate": "11/12/1864",
        "deathdate": "04/10/1866"
    }, {
        "firstname": "Maud",
        "lastname": "Adams",
        "birthdate": "08/04/1864",
        "deathdate": "09/11/1908"
    }, {
        "firstname": "Seamus",
        "lastname": "O'Brien",
        "birthdate": "10/12/1864",
        "deathdate": "09/11/1901"
    }]


    let dataTable = $("<table><thead><tr><th>First Name</th><th>Last Name</th><th>Born</th><th>Died</th><th>Age of Death</th></tr></thead></table>");
    $("body").append(dataTable.attr("class", "table")); // Create table skeleton and insert it into DOM. Add class for CSS styling 
    $.each(data, (index) => {
        dataTable.append(
            "<tr><td>" + data[index].firstname +
            "</td><td>" + data[index].lastname +
            "</td><td>" + data[index].birthdate + "m" +
            "</td><td>" + data[index].deathdate +
            "</td><td>" + data[index].ageofdeath
        );

        $("#censusdata").data('value');

        let dob = $('#censusdata').val();
        if (dob != '') {
            let today = new Date();
            let dayDiff = Math.ceil(today - dob) / (1000 * 60 * 60 * 24 * 365);
            let age = parseInt(dayDiff);
            $('#age').append((ageofdeath)(age + ' years old'));
        }

        let p = document.getElementById('averageageatdeath');

    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
   <h1>Births and Deaths amongst Workhouse Residents - Born 1864</h1>
   <div id="censusdata"></div>
   <div id="averageageatdeath"></div>
</body>

Я также попробовал этот код прямо здесь, чтобы получить значение дат для расчета.

$.each(data, (index) => {

data[index].birthdate + "m" +
data[index].deathdate +
data[index].ageofdeath
}

1 Ответ

0 голосов
/ 12 января 2020

Вы можете поместить это после того, как объявите переменную данных:

data = data.map(person => {
  const ageofdeath = Math.floor((new Date(person.deathdate) - new Date(person.birthdate)) / (1000 * 60 * 60 * 24 * 365));
  return {
    ...person,
    ageofdeath
  }
});

Затем получите к нему доступ с помощью data[index].ageofdeath.

Чтобы быть более эффективными, поместите вычисление в jquery каждый л oop до dataTable.append:

const ageOfDeathInMilliseconds = new Date(data[index].deathdate) - new Date(data[index].birthdate);
data[index].ageofdeath = Math.floor(ageOfDeathInMilliseconds / (1000 * 60 * 60 * 24 * 365));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...