简体   繁体   English

用两个对象对Javascript数组进行排序(菜鸟)

[英]Javascript Array sorting with two objects (noob)

So i have an array with two objects like this: 所以我有一个带有两个这样的对象的数组:

Array(4)
0:{Activity: "Skiing", Duration: 74}
1:{Activity: "Strength training", Duration: 64}
2:{Activity: "Cycling", Duration: 64}
3:{Activity: "Running", Duration: 43}

The input is coming from a user which selects one out of four different activities, and then write how long the workout lasted. 输入来自用户,用户从四个不同的活动中选择一个,然后写下锻炼持续了多长时间。

And what i want to do is to sort them in a way that sums the "duration" instead of makeing a new array element. 我想做的是对它们进行排序,以求和“持续时间”,而不是制作一个新的数组元素。

So if the user inputs "activity" and "Duration" the array will find the right activity and increase the duration to give a total duration. 因此,如果用户输入“活动”和“持续时间”,则阵列将找到正确的活动并增加持续时间以给出总持续时间。 For instance if 例如,如果

"activity": "skiing", "Duration"= 10 “活动”:“滑雪”,“持续时间” = 10

Would update Duration to " 84" 将持续时间更新为“ 84”

Array(4)
0:{Activity: "Skiing", Duration: 84}
1:{Activity: "Strength training", Duration: 64}
2:{Activity: "Cycling", Duration: 64}
3:{Activity: "Running", Duration: 43}

I would appreciate it a lot if somebody could help me. 如果有人可以帮助我,我将不胜感激。

Use .find and then update the found object: 使用.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); 

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM