所以我有一个包含两个这样的对象的数组:
Array(4)
0:{Activity: "Skiing", Duration: 74}
1:{Activity: "Strength training", Duration: 64}
2:{Activity: "Cycling", Duration: 64}
3:{Activity: "Running", Duration: 43}
输入来自用户,该用户从四个不同的活动中选择一个,然后写下锻炼持续的时间。
我想做的是以对“持续时间”求和而不是制作新数组元素的方式对它们进行排序。
因此,如果用户输入“活动”和“持续时间”,则阵列将找到正确的活动并增加持续时间以给出总持续时间。 例如,如果
“活动”:“滑雪”,“持续时间”= 10
将持续时间更新为“84”
Array(4)
0:{Activity: "Skiing", Duration: 84}
1:{Activity: "Strength training", Duration: 64}
2:{Activity: "Cycling", Duration: 64}
3:{Activity: "Running", Duration: 43}
如果有人能帮助我,我会非常感激。
答案 0 :(得分:1)
使用.find
然后更新找到的对象:
const arr = [
{Activity: "Skiing", Duration: 74},
{Activity: "Strength training", Duration: 64},
{Activity: "Cycling", Duration: 64},
{Activity: "Running", Duration: 43},
];
const inputActivity = 'Cycling';
const inputDuration = 33;
const foundObj = arr.find(({ Activity }) => Activity === inputActivity);
if (foundObj) foundObj.Duration += inputDuration;
console.log(arr);
答案 1 :(得分:0)
let arr =
[
{Activity: "Skiing", Duration: 74},
{Activity: "Strength training", Duration: 64},
{Activity: "Cycling", Duration: 64},
{Activity: "Running", Duration: 43}
];
let input = {
Activity: "Skiing",
Duration: 12
};
arr = arr.filter(
x => {
if(x.Activity === input.Activity)
x.Duration += input.Duration;
return x;
}
);
console.log(arr);