[英]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.