gpt4 book ai didi

javascript - 映射数组时如何计算两年之间的差异

转载 作者:行者123 更新时间:2023-11-28 03:10:13 25 4
gpt4 key购买 nike

所以我有一个包含总统信息的数组,如下所示

         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;


};

提前感谢您的帮助!

最佳答案

回答

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

你的问题的答案是,在这个对象上没有像时间这样的属性。只有 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;

};

关于javascript - 映射数组时如何计算两年之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com