提问人:MeltingDog 提问时间:7/25/2023 更新时间:7/25/2023 访问量:21
如何使用全局函数中的多个值更新现有对象?
How do I update an existing object with multiple values from a global function?
问:
我在我正在处理的 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);
但没有结果。
有谁知道正确的方法?
答:
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;
}
评论