所以我有一个带有两个这样的对象的数组:

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}


如果有人可以帮助我,我将不胜感激。

最佳答案

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);

10-07 13:51
查看更多