映射数组时,如何计算两年之间的差额

时间:2020-02-13 05:24:18

标签: javascript arrays function mapping

所以我有一个数组,其中包含总统信息,像这样

         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”下设置它的方式变得不确定。那会是我为它编写另一个单独的函数然后以这种方式找出来的东西吗?

        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 :(得分:0)

答案

让我们从一个令人困惑的参数名称开始。 name实际上是一个对象,而不是数组。

您的问题的答案是该对象上没有oldPresidentsArray这样的属性。只有time,并且它返回一个范围为年的字符串。

您错过了tm函数中计数时间的实现。

示例解决方案

mapPresidents()