如何使用全局函数中的多个值更新现有对象?

How do I update an existing object with multiple values from a global function?

提问人:MeltingDog 提问时间:7/25/2023 更新时间:7/25/2023 访问量:21

问:

我在我正在处理的 JS 脚本中有以下对象:

let time = {
    years: 0,
    months: 0
};

我还有一个全局帮助程序函数,在一个单独的文件上,它计算给定的月数的总年数和月数:

helpers.monthsToYears = function(months) {
    var totalYears = months / 12;
    return [Math.floor(totalYears), Math.round((totalYears - Math.floor(totalYears)) * 12)];
};

我想使用全局函数更新我的数组,但我不确定如何简单地做到这一点。time

我已经搜索并找到了从函数的输出创建新对象的方法,但没有找到如何更新现有对象的方法。

我尝试过这样的事情:

    time[years,months] = helpers.monthsToYears(results.months);

但没有结果。

有谁知道正确的方法?

JavaScript jQuery 对象

评论


答:

1赞 Zac Anger 7/25/2023 #1

你可以做到

// destructuring assignment
const [ years, months ] = helpers.monthsToYears(results.months)
// that's equivalent to
// const res = helpers.monthsToYears(results.months)
// const years = res[0]; const months = res[1]

time = { months, years }
// or
// time.months = months
// time.years = years
1赞 Raheut Rahwana 7/25/2023 #2

根据您所指的“更新现有对象”的含义,根据 Zac Anger 的上述回答,您还可以执行:

time.years += years;
time.months += months;

if (time.months >= 12) {
    time.years += Math.floor(time.months / 12);
    time.months = time.months % 12;
}