【问题标题】:Javascript Array sorting with two objects (noob)Javascript数组排序与两个对象(菜鸟)
【发布时间】:2018-09-13 09:25:33
【问题描述】:

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

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}

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

【问题讨论】:

  • 这里真的有排序吗?
  • 如前所述,这不是排序问题。这实际上只是增加数组中适当的对象。

标签: javascript arrays sorting search replace


【解决方案1】:
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);

【讨论】:

    【解决方案2】:

    使用.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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 2021-12-14
      • 2012-12-10
      • 1970-01-01
      • 2021-10-27
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多