При отображении массива, как я могу взять разницу между двумя годами - PullRequest
1 голос
/ 13 февраля 2020

Итак, у меня есть массив с информацией президентов, который выглядит следующим образом

         var presidentsLookLikeThis = [{
            "id": 1,
            "president": 1,
            "nm": "George Washington",
            "pp": "None, Federalist",
            "tm": "1789-1797"
        }];

, и я пытаюсь, чтобы он выглядел так, как показано ниже

        var target = [{
            "id": 1,
            "number": 1,
            "firstName": "",
            "lastName": "", // You can include Middle Initials here
            "party": "...",
            "yearsInOffice": 4
        }];

, поэтому я сопоставил это ниже, но я не могу понять, как отобразить фактическую продолжительность их президентства ниже. способ, которым я настроил это теперь под "yearsInOffice", я получаю Undefined. это будет что-то, для чего я пишу другую отдельную функцию, а затем пойму это таким образом?

        var newPresidents = presidents.map(mapPresidents);

        function mapPresidents(oldPresidentsArray) {

            let namesInArray = oldPresidentsArray.nm;
            const nameParts = namesInArray.split(/ (.+)/); // incase of president having middle initial

        var newPresidentsArray = {
                id: oldPresidentsArray.id,
                number: oldPresidentsArray.president,
                firstName: nameParts[0],
                lastName: nameParts[1],   
                party: oldPresidentsArray.pp,
                yearsInOffice: oldPresidentsArray.time
            };

            return newPresidentsArray;


        };

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 13 февраля 2020

Ответ

Давайте начнем с запутанного имени параметра. oldPresidentsArray на самом деле является объектом, а не массивом.

Ответ на ваш вопрос заключается в том, что на этом объекте нет такого свойства, как time. Существует только tm, и она возвращает строку с диапазоном лет.

Вам не хватает реализации вашего времени счета в функции mapPresidents().

Пример решения

var presidents = [{
            "id": 1,
            "president": 1,
            "nm": "George Washington",
            "pp": "None, Federalist",
            "tm": "1789-1797"
        }];
 
var newPresidents = presidents.map(mapPresidents);
console.log(newPresidents)

 
 function mapPresidents(oldPresident) {

            let namesInArray = oldPresident.nm;
            const nameParts = namesInArray.split(/ (.+)/); // incase of president having middle initial
            const yearsInOfficeArr = oldPresident.tm.split('-').map(year => +year) //Separate years and parse it into numbers
            const yearsInOffice = yearsInOfficeArr[1] - yearsInOfficeArr[0] || yearsInOfficeArr[0]
        var newPresident = {
                id: oldPresident.id,
                number: oldPresident.president,
                firstName: nameParts[0],
                lastName: nameParts[1],   
                party: oldPresident.pp,
                yearsInOffice: yearsInOffice
            };

            return newPresident;

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